python使用插座创建tcp服务器和客户端。
服务器端为一个时间戳服务器,在接收到客户端发来的数据后,自动回复。
客户端,等待用户输入,回车后向服务器发送用户输入的内容。
分别在python2.7和python3.6下测试。在启动时需要先启动服务器端,在启动客户端。
<强> python2.7下强>
服务器端代码为
utf - 8编码: 从套接字进口* 从时间进口ctime 打印(“=====================时间戳TCP服务器====================="); 主机=" #主机号为空白表示可以使用任何可用的地址。 端口=21567 #端口号 BUFSIZ=1024 #接收数据缓冲大小 ADDR=(主机、端口) tcpSerSock=插座(AF_INET SOCK_STREAM) #创建TCP服务器套接字 tcpSerSock.bind (ADDR) #套接字与地址绑定 tcpSerSock.listen(5) #监听连接,同时连接请求的最大数目 而真正的: 打印('等待客户端的连接……) tcpCliSock addr=tcpSerSock.accept() #接收客户端连接请求 打印(“取得连接:“,addr) 而真正的: data=tcpCliSock.recv (BUFSIZ) #连续接收指定字节的数据,接收到的是字节数组 如果没有数据:#如果数据空白,则表示客户端退出,所以退出接收 打破 tcpCliSock。发送((% s) % s的% (ctime(),数据))#向客户端发送时间戳数据 tcpCliSock.close() #关闭与客户端的连接 tcpSerSock.close() #关闭服务器插座 >之前客户端代码为
utf - 8编码: 从套接字进口* 打印(“=====================TCP客户端====================="); 主机=' 127.0.0.1 ' #服务器ip地址,等价于localhost 端口=21567 #通信端口号 BUFSIZ=1024 #接收数据缓冲大小 ADDR=(主机、端口) tcpCliSock=插座(AF_INET SOCK_STREAM) #创建客户端套接字 tcpCliSock.connect (ADDR) #发起TCP连接 而真正的: data=https://www.yisu.com/zixun/raw_input('比;”)#接收用户输入 如果没有数据:#如果用户输入为空,直接回车就会发送“”,“”就是代表错误的 打破 tcpCliSock.send(数据)#客户端发送消息 data=tcpCliSock.recv (BUFSIZ) #接收回应消息,接收到的是字节数组 如果没有数据:#如果接收服务器信息失败,或没有消息回应 打破 打印(数据)#打印回应消息 tcpCliSock.close() #关闭客户端插座 >之前<强> python3.6下强>
服务器端代码为
utf - 8编码: 从套接字进口* 从时间进口ctime 打印(“=====================时间戳TCP服务器====================="); 主机=' 127.0.0.1 ' #主机号为空白表示可以使用任何可用的地址。 端口=21567 #端口号 BUFSIZ=1024 #接收数据缓冲大小 ADDR=(主机、端口) tcpSerSock=插座(AF_INET SOCK_STREAM) #创建TCP服务器套接字 tcpSerSock.bind (ADDR) #套接字与地址绑定 tcpSerSock.listen(5) #监听连接,同时连接请求的最大数目 而真正的: 打印('等待客户端的连接……) tcpCliSock addr=tcpSerSock.accept() #接收客户端连接请求 打印(“取得连接:“,addr) 而真正的: data=tcpCliSock.recv (BUFSIZ) #连续接收指定字节的数据,接收到的是字节数组 如果没有数据:#如果数据空白,则表示客户端退出,所以退出接收 打破 # tcpCliSock。发送((% s) % s的%(字节(ctime (),“utf - 8”),数据)) tcpCliSock。发送(字节((% s) % s的% (ctime (), data.decode (utf - 8)),“utf - 8”)) #向客户端发送时间戳数据,必须发送字节数组 tcpCliSock.close() #关闭与客户端的连接 tcpSerSock.close() #关闭服务器插座 >之前客户端代码为
utf - 8编码: 从套接字进口* 打印(“=====================TCP客户端====================="); 主机=' 127.0.0.1 ' #服务器ip地址,等价于localhost 端口=21567 #通信端口号 BUFSIZ=1024 #接收数据缓冲大小 ADDR=(主机、端口) tcpCliSock=插座(AF_INET SOCK_STREAM) #创建客户端套接字 tcpCliSock.connect (ADDR) #发起TCP连接 而真正的: data=https://www.yisu.com/zixun/input('比;”)#接收用户输入 如果没有数据:#如果用户输入为空,直接回车就会发送“”,“”就是代表错误的 打破 tcpCliSock。发送(字节(数据、“utf - 8”)) #客户端发送消息,必须发送字节数组 data=tcpCliSock.recv (BUFSIZ) #接收回应消息,接收到的是字节数组 如果没有数据:#如果接收服务器信息失败,或没有消息回应 打破 print (data.decode (utf - 8)) #打印回应消息,或者str(数据、“utf - 8”) tcpCliSock.close() #关闭客户端插座python使用插座创建tcp服务器和客户端