58 lines
1.6 KiB
Plaintext
58 lines
1.6 KiB
Plaintext
модуль тцп
|
||
|
||
// c:include "suckit.h"
|
||
|
||
фн create_socket_fd(port: Цел64): Цел64 @внеш
|
||
фн accept_socket(fd: Цел64): Цел64 @внеш
|
||
фн read_to_string(fd: Цел64, bytes: Цел64): Строка @внеш
|
||
фн close_socket(socket: Цел64) @внеш
|
||
фн write_string(socket: Цел64, data: Строка) @внеш
|
||
фн connect_socket(host: Строка, port: Цел64): Цел64 @внеш
|
||
|
||
тип ТцпСервер* = класс {
|
||
фд: Цел64 = 0
|
||
}
|
||
|
||
тип ТцпСоединение* = класс {
|
||
фд: Цел64 = 0
|
||
}
|
||
|
||
фн создать сервер*(порт: Цел64): ТцпСервер {
|
||
пусть фд = create_socket_fd(порт)
|
||
|
||
вернуть ТцпСервер{
|
||
фд: фд
|
||
}
|
||
}
|
||
|
||
фн (с: ТцпСервер) принять чертово соединение*(): ТцпСоединение {
|
||
пусть фд = accept_socket(с.фд)
|
||
|
||
вернуть ТцпСоединение{
|
||
фд: фд
|
||
}
|
||
}
|
||
|
||
фн (с: ТцпСоединение) прочитать*(сколько: Цел64): Строка {
|
||
вернуть read_to_string(с.фд, сколько)
|
||
}
|
||
|
||
фн (с: ТцпСоединение) записать*(данные: Строка) {
|
||
write_string(с.фд, данные)
|
||
}
|
||
|
||
фн (с: ТцпСоединение) закрыть*() {
|
||
close_socket(с.фд)
|
||
}
|
||
|
||
фн (с: ТцпСервер) закрыть*() {
|
||
close_socket(с.фд)
|
||
}
|
||
|
||
фн подключиться*(хост: Строка, порт: Цел64): ТцпСоединение {
|
||
пусть фд = connect_socket(хост, порт)
|
||
вернуть ТцпСоединение{ фд: фд }
|
||
}
|
||
|
||
|