# !/usr/bin/python3
# -*-coding:UTF-8-*-
import socket
def clint():
'''客户端程序'''
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', 9999)) # 建立连接
print(s.recv(1024).decode('utf-8')) # 接收消息
for data in [b'Michael', b'Tracy', b'Sarah']:
s.send(data) # 发送数据
print(s.recv(1024).decode('utf-8'))
s.send(b'exit')
s.close()
if __name__ == '__main__':
clint()
import socket
import threading
import time
def sever():
'''服务器程序'''
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('127.0.0.1', 9999)) # 监听端口
s.listen(5)
print('Waiting for connection...')
while True:
sock, addr = s.accept() # 接受一个新连接
t = threading.Thread(target=tcplink, args=(sock, addr)) # 创建新线程来处理TCP连接
t.start()
def tcplink(sock, addr):
'''收发程序'''
print('Accept new connection from %s:%s...' % addr)
sock.send(b'Welcome!')
while True:
data = sock.recv(1024)
time.sleep(1)
if not data or data.decode('utf-8') == 'exit':
break
sock.send(('Hello, %s!' % data.decode('utf-8')).encode('utf-8'))
sock.close()
print('Connection from %s:%s closed.' % addr)
if __name__ == '__main__':
sever()
运行结果:
D:\Python37\python.exe D:/Python37/Code/socket_sever.py
Waiting for connection...
Accept new connection from 127.0.0.1:57406...
Connection from 127.0.0.1:57406 closed.
进程已结束,退出代码 -1
ywjco_567
需要做成两个文件,先运行服务器,再运行客户机。
运行结果: