python实现TCP聊天
服务端运行结果如下:
客户端运行结果如下:
#导入 socket所以函数
from socket import *
#定义服务端
def server():
HOST = '127.0.0.1'
PORT = 9900
ADDRESS = (HOST, PORT)
sock = socket(AF_INET, SOCK_STREAM)
sock.bind(ADDRESS)
print("Server startup, listening on port {}...".format(sock.getsockname()))
sock.listen(5)
try:
while True:
print('The server is running, waiting for the client to connect...')
client_socket, client_address = sock.accept()
print('Client {} connected!'.format(client_address))
try:
while True:
try:
data = client_socket.recv(2048)
except:
continue
if data:
print('Received message {} ({} bytes) from {}'.format(data.decode('utf-8'), len(data), client_address))
# 返回响应数据,将客户端发送来的数据原样返回
# client_socket.send(data)
server_input=input('server_input :')
client_socket.send(server_input.encode('utf-8'))
print('Send message {} to {}'.format(data.decode('utf-8'), client_address))
else:
print('The client {} has been disconnected!'.format(client_address))
break
finally:
client_socket.close()
finally:
sock.close()
#定义客户端
def client():
HOST = '127.0.0.1'
PORT = 9900
BUFSIZ = 1024
ADDRESS = (HOST, PORT)
tcpClientSocket = socket(AF_INET, SOCK_STREAM)
tcpClientSocket.connect(ADDRESS)
while True:
data = input('client_input :')
if not data:
break
tcpClientSocket.send(data.encode('utf-8'))
data, ADDR = tcpClientSocket.recvfrom(BUFSIZ)
if not data:
break
print("Server side response:", data.decode('utf-8'))
print("Link disconnected!")
tcpClientSocket.close()
#输入‘server’运行server(),输入‘client’运行client()
inpu=input('server/client:')
if inpu == 'server':
server()
else:
client()