您的位置:首页 > 编程语言 > Python开发

python socket编程之双方相互通信简单实例

2017-10-02 10:00 651 查看
实例说明:

本实例实现真实局域网内两个物理主机的相互通信,两个物理主机的操作系统分别是windows8.1和windows10。

实例代码:

客户端

import socket
addr = ('210.40.7.130',10000)#目标主机IP
readdr = ('210.40.7.145',10000)#本主机IP
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

s.bind(readdr)
while 1:

data = input("input:")
if not data:
break
s.sendto(data.encode("utf-8"),addr)

recivedata,addrg = s.recvfrom(2048)
if recivedata:
print("from:",addrg)
print("got recive :",recivedata.decode())
s.close()
服务端

import socket
address = ('210.40.7.130',10000)#本主机IP
readdr = ("210.40.7.145",10000)#客户端主机IP
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

s.bind(address)
while 1:
data,addr=s.recvfrom(2048)
if not data:
break
print("got data from",addr)
print(data.decode())
replydata = input("reply:")
s.sendto(replydata.encode("utf-8"),readdr)
s.close()


服务端与客户端通信截图:

客户端



服务端



注意点:

1、如何出现打印的字符窜有b‘xxxxx’,如何去掉b?

直接decode()一下;

2、如果出现

Traceback (most recent call last):

  File "C:/Users/vinsuan/PycharmProjects/untitled1/clientTest.py", line 6, in <module>

    s.bind(readdr)

OSError: [WinError 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。

这是因为你之前运行的进程没有真正关闭,可以到任务管理器中去杀死名为“python”的进程

3、如果出现拒绝连接,可以先尝试ping一下目标主机?如果出现超时,很可能是因为两台主机防火墙的原因,暂时关闭防火墙就行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: