当前位置:首页 > 编程技术 > 正文

socket如何通信

socket如何通信

Socket 是一种用于实现网络通信的接口,它允许两个程序在不同的计算机上通过网络进行数据交换。以下是使用 Socket 进行通信的基本步骤: 1. 创建 Socket...

Socket 是一种用于实现网络通信的接口,它允许两个程序在不同的计算机上通过网络进行数据交换。以下是使用 Socket 进行通信的基本步骤:

1. 创建 Socket

需要创建一个 Socket。Socket 可以是 TCP 或 UDP 的。

TCP Socket:提供可靠的、面向连接的服务。

UDP Socket:提供不可靠的、无连接的服务。

```python

import socket

创建 TCP Socket

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

创建 UDP Socket

udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

```

2. 连接

对于 TCP Socket,需要连接到服务器。

```python

连接到服务器

tcp_socket.connect(('127.0.0.1', 12345))

```

3. 发送和接收数据

TCP Socket:

```python

发送数据

tcp_socket.sendall(b'Hello, world!')

接收数据

data = tcp_socket.recv(1024)

print('Received:', data.decode())

```

UDP Socket:

```python

发送数据

udp_socket.sendto(b'Hello, world!', ('127.0.0.1', 12345))

接收数据

data, addr = udp_socket.recvfrom(1024)

print('Received:', data.decode(), 'from', addr)

```

4. 关闭 Socket

通信完成后,关闭 Socket。

```python

关闭 TCP Socket

tcp_socket.close()

关闭 UDP Socket

udp_socket.close()

```

示例:TCP 服务器和客户端

TCP 服务器

```python

import socket

创建 TCP Socket

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

绑定到端口

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

监听连接

server_socket.listen()

接受连接

conn, addr = server_socket.accept()

print('Connected by', addr)

通信

with conn:

while True:

data = conn.recv(1024)

if not data:

break

print('Received:', data.decode())

conn.sendall(data)

```

TCP 客户端

```python

import socket

创建 TCP Socket

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

连接到服务器

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

通信

with client_socket:

while True:

data = input()

client_socket.sendall(data.encode())

data = client_socket.recv(1024)

print('Received:', data.decode())

```

这样,你就完成了使用 Socket 进行通信的基本流程。希望这能帮助你!

最新文章