实验环境
python3
服务器:ubuntu18
客户端:win10
服务器端的Python文件第一行要加上这行代码: #!/usr/bin/python3
服务器
from socket import *
#创建套接字sockfd
sockfd = socket() #默认参数可以创建tcp套接字
#套接字绑定服务器本机ip,端口
sockfd.bind(('172.23.45.235',8888))
#让套接字具有监听功能,创建监听队列
sockfd.listen(5)
while True:
print("waiting for connect....")
connfd,addr = sockfd.accept()
# accept函数主要用于服务器端,一般位于listen函数之后,默认会阻塞进程,
# 直到有一个客户请求连接,建立好连接后,它返回的一个新的套接字connfd,以及客户的地址addr,
# 此后,服务器端即可使用这个新的套接字connfd与该客户端进行通信,
# 而sockfd则继续用于监听其他客户端的连接请求
print("connect from",addr)
while True:
data = connfd.recv(1024) #收消息
if not data:
break
print("客户端发来的消息:",data.decode())
#发消息通过str.decode()编码
connfd.send("服务端已收到消息!".encode()) #发消息
#收消息通过str.encode()解码
connfd.close()
sockfd.close()
客户端
from socket import *
#创建套接字
sockfd = socket()
#发起连接,绑定服务器ip
sockfd.connect(("172.24.45.235",9090))
while True:
msg = input("发消息>>")
#服务端那边是先收消息,所以客户端就先发
#发消息
sockfd.send(msg.encode())
if not msg:
break
#收消息
data = sockfd.recv(1024)
print(data.decode())
sockfd.close()
在服务器端运行时出现了错误99,98,部分原因是之前的程序未结束。此时ps显示当前进程,kill将进程杀死,然后重启终端,即可解决问题。
linux下用./xxx.py运行python文件。
注:客户端和服务器端的代码中socket bind绑定的IP需为同一个IP,此处绑定的IP为服务器IP。
代码原博:
https://www.cnblogs.com/hooo-1102/p/10766949.html