tcp怎么编程发数据

时间:2025-01-25 07:49:43 网络游戏

在TCP编程中,发送数据的基本步骤如下:

创建套接字

在服务器端,使用`socket()`函数创建一个TCP套接字。例如,在C++中,`int server_socket = socket(AF_INET, SOCK_STREAM, 0);`。

在客户端,同样使用`socket()`函数创建一个TCP套接字。例如,在Python中,`s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)`。

绑定地址和端口

在服务器端,使用`bind()`函数将套接字绑定到本地的IP地址和端口号。例如,在C++中,`server_addr.sin_family = AF_INET; server_addr.sin_port = htons(port); server_socket.bind(server_addr);`。

在客户端,可以使用`connect()`函数连接到服务器的IP地址和端口号。例如,在Python中,`s.connect(('localhost', port))`。

监听连接请求 (仅服务器端需要):

使用`listen()`函数监听客户端的连接请求。例如,在C++中,`server_socket.listen(5);`。

在Python中,`server_socket.listen(1)`。

接受连接(仅服务器端需要):

使用`accept()`函数接受客户端的连接请求。例如,在C++中,`Socket client_socket = server_socket.accept();`。

在Python中,`client_socket, client_address = server_socket.accept()`。

数据交互

在服务器端,使用`recv()`函数接收客户端发送的数据。例如,在C++中,`char buffer; int bytes_received = client_socket.recv(buffer, sizeof(buffer));`。

在Python中,使用`in.readline()`或`client_socket.recv(1024)`。

使用`send()`函数发送数据回客户端。例如,在C++中,`client_socket.send(buffer, bytes_received);`。

在Python中,使用`out.write(message + '

')`或`client_socket.send(message.encode())`。

关闭连接

在数据交互完成后,使用`close()`函数关闭套接字。例如,在C++中,`client_socket.close();`。

在Python中,`client_socket.close()`。

服务器端代码:

```python

import socket

创建TCP/IP套接字

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

绑定地址和端口

server_socket.bind(('localhost', 12345))

监听客户端连接

server_socket.listen(1)

print("服务器已启动,等待客户端连接...")

接受连接

client_socket, client_address = server_socket.accept()

print("客户端已连接:", client_address)

数据交互

while True:

message = client_socket.recv(1024)

if message:

print(f"收到消息: {message.decode()}")

response = "Hello from server!"

client_socket.send(response.encode())

else:

break

关闭连接

client_socket.close()

server_socket.close()

```

客户端代码

```python

import socket

创建TCP/IP套接字

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

连接到服务器

client_socket.connect(('localhost', 12345))

发送数据

message = "Hello from client!"

client_socket.send(message.encode())

接收数据

response = client_socket.recv(1024)

print(f"收到服务器消息: {response.decode()}")

关闭连接

client_socket.close()

```

通过以上步骤和示例代码,可以实现TCP协议的基本数据发送和接收功能。