socket通信实现

socket通信实现

使用多线程搞定多客户端连接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 使用多线程搞定多客户端连接
# socket_client.py
import socket

client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect(("127.0.0.1",8888))
while True:
str1 = input()
client.send(str1.encode("utf8"))
if str1== "exit" or str1== "bye":
break
data = client.recv(1024)
print(data.decode("utf8"))
# client.close()

client.close()

# socket_server.py
import socket
from threading import Thread

# SOCK_STREAM: TCP传输协议,可靠,有序传输 SOCK_DGRAM UDP


server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('127.0.0.1', 8888))
server.listen()


# 使用多线程搞定多客户端连接
def handle_socket(sock, addr):
while True:
# 一次获取1kb的数据
data = sock.recv(1024)
print(data.decode("utf-8"))
if data.decode("utf-8") == "exit" or data.decode("utf-8") == "bye":
break
str1 = input()
sock.send(str1.encode("utf-8"))
server.close()
sock.close()

while True:
sock, addr = server.accept()
# 使用多线程处理客户端连接
sockthread = Thread(target=handle_socket, args=(sock, addr))
sockthread.start()
# server.close()
# sock.close()

单客户端连接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 单客户端连接
# socket_server.py
import socket
from threading import Thread

# SOCK_STREAM: TCP传输协议,可靠,有序传输 SOCK_DGRAM UDP


server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('127.0.0.1', 8888))
server.listen()

sock, addr = server.accept()
while True:
# 一次获取1kb的数据
data = sock.recv(1024)
print(data.decode("utf-8"))
if data.decode("utf-8") == "exit" or data.decode("utf-8") == "bye":
break
str1 = input()
sock.send(str1.encode("utf-8"))
server.close()
sock.close()

# socket_client.py
import socket

client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect(("127.0.0.1",8888))
while True:
str1 = input()
client.send(str1.encode("utf8"))
data = client.recv(1024)
print(data.decode("utf8"))

client.close()
坚持原创技术分享,您的支持将鼓励我继续创作!