Python两台电脑实现TCP通信的方法示例
为了实现Nao机器人与电脑端的TCP通信,于是研究了一下Python实现TCP通信,在网上也看到了很多例子,但大多都是在一台机器上验证。在两台机器上使用,出了一些小故障。
注意:若两台电脑通信出了问题,若能ping通!大部分是防火墙的问题。一开始A做服务器,B做客户端能实现;B做服务器,A做客户端,A就不能连接到B。我换了一台电脑A就能实现通信了。应该是A的防火墙需要设置。但是A的防火墙全关了也不能实现。真是很让人搞不懂。
首先是服务器端代码:
#-*-encoding:utf-8-*-
importsocket
IP="192.168.1.153"#服务器端可以写"localhost",可以为空字符串"",可以为本机IP地址
port=40005#端口号
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((IP,port))
s.listen(1)
print('listenatport:',port)
conn,addr=s.accept()
print('connectedby',addr)
whileTrue:
data=conn.recv(1024)
data=data.decode()#解码
ifnotdata:
break
print('recievedmessage:',data)
send=raw_input('return:')#python27要写raw_input,python3.X可写input
conn.sendall(send.encode())#再编码发送
conn.close()
s.close()
客户端代码:
#-*-encoding:utf-8-*-
importsocket
importsys
IP='192.168.1.153'#填写服务器端的IP地址
port=40005#端口号必须一致
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
try:
s.connect((IP,port))
exceptExceptionase:
print('servernotfindornotopen')
sys.exit()
whileTrue:
trigger=raw_input("send:")
s.sendall(trigger.encode())
data=s.recv(1024)
data=data.decode()
print('recieved:',data)
iftrigger.lower()=='1':#发送1结束连接
break
s.close()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。