socket如何通信

Socket 是一種用于實(shí)現(xiàn)網(wǎng)絡(luò)通信的接口,它允許兩個(gè)程序在不同的計(jì)算機(jī)上通過(guò)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)交換。以下是使用 Socket 進(jìn)行通信的基本步驟: 1. 創(chuàng)建 Socket...
Socket 是一種用于實(shí)現(xiàn)網(wǎng)絡(luò)通信的接口,它允許兩個(gè)程序在不同的計(jì)算機(jī)上通過(guò)網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)交換。以下是使用 Socket 進(jìn)行通信的基本步驟:
1. 創(chuàng)建 Socket
需要?jiǎng)?chuàng)建一個(gè) Socket。Socket 可以是 TCP 或 UDP 的。
TCP Socket:提供可靠的、面向連接的服務(wù)。
UDP Socket:提供不可靠的、無(wú)連接的服務(wù)。
```python
import socket
創(chuàng)建 TCP Socket
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
創(chuàng)建 UDP Socket
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
```
2. 連接
對(duì)于 TCP Socket,需要連接到服務(wù)器。
```python
連接到服務(wù)器
tcp_socket.connect(('127.0.0.1', 12345))
```
3. 發(fā)送和接收數(shù)據(jù)
TCP Socket:
```python
發(fā)送數(shù)據(jù)
tcp_socket.sendall(b'Hello, world!')
接收數(shù)據(jù)
data = tcp_socket.recv(1024)
print('Received:', data.decode())
```
UDP Socket:
```python
發(fā)送數(shù)據(jù)
udp_socket.sendto(b'Hello, world!', ('127.0.0.1', 12345))
接收數(shù)據(jù)
data, addr = udp_socket.recvfrom(1024)
print('Received:', data.decode(), 'from', addr)
```
4. 關(guān)閉 Socket
通信完成后,關(guān)閉 Socket。
```python
關(guān)閉 TCP Socket
tcp_socket.close()
關(guān)閉 UDP Socket
udp_socket.close()
```
示例:TCP 服務(wù)器和客戶端
TCP 服務(wù)器
```python
import socket
創(chuàng)建 TCP Socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
綁定到端口
server_socket.bind(('127.0.0.1', 12345))
監(jiān)聽連接
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
創(chuàng)建 TCP Socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
連接到服務(wù)器
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 進(jìn)行通信的基本流程。希望這能幫助你!
本文鏈接:http://www.resource-tj.com/bian/445337.html
上一篇:文件不顯示后綴pdf如何處理