Server
Настраивайте меню.
Last updated
Настраивайте меню.
Last updated
"""Обязательные константы для работы сервера"""
SERVER_PORT = 64200 # Укажите свой, он должен быть свободным.
"""Неоязательные константы для работы сервера"""
BUFFER_SIZE = 1024 # Это значение по умолчанию.
Перед работой, обязательно установитеSERVER_PORT
, иначе сервер не будет работать.
Для производительности, рекомендуем устанавливать buffer_size равный весу передаваемых данных.
def send(data: str) -> None:
Название | Тип | Описание |
---|---|---|
По умолчанию, все аргументы установлены в соответствии с состоянием меню.
def recv() -> str:
Пока не получит данные, заморозит текущий поток.
def close(self) -> None:
Закрывает соединение с клиентом.
Python:
import socket
class Client:
def __init__(self, host='127.0.0.1', port=65432):
self.host = host
self.port = port
self.s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.s.connect((self.host, self.port))
def send(self, data):
self.s.sendall(data.encode('utf-8'))
def recv(self, buffer_size=1024):
data = self.s.recv(buffer_size)
return data.decode('utf-8')
def close(self):
self.s.close()
if __name__ == "__main__":
c = Client()
c.send('hello napi') # Отправка данных в NAPI
data = c.recv() # Получение данных от NAPI
print(f"Получено от napi: {data}")
c.close()
C++:
#include <iostream>
#include <string>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <cstring>
class Client {
public:
Client(std::string host = "127.0.0.1", int port = 65432) {
this->host = host;
this->port = port;
// Создание сокета
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock < 0) {
perror("Ошибка создания сокета");
exit(1);
}
// Установка адреса сервера
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(port);
inet_pton(AF_INET, host.c_str(), &server_addr.sin_addr);
// Подключение к серверу
if (connect(sock, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
perror("Ошибка подключения");
exit(2);
}
}
void send(const std::string& data) {
if (::send(sock, data.c_str(), data.length(), 0) < 0) {
perror("Ошибка отправки данных");
}
}
std::string recv(int buffer_size = 1024) {
char buffer[buffer_size];
std::memset(buffer, 0, buffer_size);
ssize_t bytes_received = ::recv(sock, buffer, buffer_size, 0);
if (bytes_received < 0) {
perror("Ошибка получения данных");
return "";
}
return std::string(buffer, bytes_received);
}
void close() {
::close(sock);
}
private:
int sock;
std::string host;
int port;
struct sockaddr_in server_addr;
};
int main() {
Client c;
c.send("hello napi"); // Отправка данных в NAPI
std::string data = c.recv(); // Получение данных от NAPI
std::cout << "Получено от napi: " << data << std::endl;
c.close();
return 0;
}
Lua:
local socket = require("socket")
local host = "127.0.0.1"
local port = 65432
local tcp = assert(socket.tcp())
tcp:connect(host, port)
function send(tcp, data)
tcp:send(data .. "\n")
end
function recv(tcp)
local data, err = tcp:receive()
if not err then
return data
else
return nil, err
end
end
function close(tcp)
tcp:close()
end
-- Использование
send(tcp, "hello napi") -- Отправка данных в NAPI
local data, err = recv(tcp) -- Получение данных от NAPI
if data then
print("Получено от napi: " .. data)
else
print("Ошибка получения данных: " .. err)
end
close(tcp)
Java:
import java.io.*;
import java.net.Socket;
public class Client {
private Socket socket;
private BufferedReader in;
private PrintWriter out;
private final String host;
private final int port;
public Client(String host, int port) {
this.host = host;
this.port = port;
}
public void connect() throws IOException {
socket = new Socket(host, port);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);
}
public void send(String data) {
out.println(data);
}
public String recv() throws IOException {
return in.readLine();
}
public void close() throws IOException {
in.close();
out.close();
socket.close();
}
public static void main(String[] args) {
Client client = new Client("127.0.0.1", 65432);
try {
client.connect();
client.send("hello napi"); // Отправка данных в NAPI
String data = client.recv(); // Получение данных от NAPI
System.out.println("Получено от napi: " + data);
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
data
str
Информация для передачи