TCP客户端程序:
import socket
def main():
# 创建tcp
tcp_client_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 链接套接字
# sever_ip=input("输入对方ip:")
# sever_port=int(input("输入对方端口:"))
# sever_addr=(sever_ip,sever_port)
tcp_client_socket.connect(sever_addr)
while True:
# 数据发送
tcp_data=input("输入发送的内容:")
tcp_client_socket.send(tcp_data.encode("utf-8"))
# 服务器返回数据
rev_data=tcp_client_socket.recv(1024)
print("服务器返回的消息:",rev_data)
# 关闭套接字
tcp_client_socket.close()
if __name__ == '__main__':
main()
TCP服务器程序:
当TCP客户端实现与服务器连接时,服务器给客户端创建一个新的服务套接字,类似10010客服,当你打通10010服务时,系统会随机给你分配一个客服与你交流。
import socket
def main():
# 创建套接字
tcp_sever_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 绑定本地信息
tcp_sever_socket.bind(('',7890))
# 让默认是套接字主动变为被动(listen)三次握手在这里完成
tcp_sever_socket.listen(128)
while True:
# 等待客户端的链接
print("等待新的客户端到来")
new_client_socket,client_addr=tcp_sever_socket.accept() # 服务套接字
print("客户端已经到来:%s"%str(client_addr))
while True:
# 接受客户端发过来的请求
recv_data=new_client_socket.recv(1024)
print("客户端发来的请求:%s"%recv_data)
# 如果recv解阻塞,有两种方式
# 1.客户端发来数据
# 2.客户端close导致了recv解阻塞
if recv_data:
#回送一部分数据给客户端
new_client_socket.send('hahhah'.encode("utf-8"))
else:
break
# 关闭套接字
new_client_socket.close()
print("已经为这个客户端服务完毕")
tcp_sever_socket.close()
if __name__ == '__main__':
main()