Python兩臺電腦實現TCP通信

爲了實現Nao機器人與電腦端的TCP通信,於是研究了一下Python實現TCP通信,在網上也看到了很多例子,但大多都是在一臺機器上驗證。在兩臺機器上使用,出了一些小故障。

注意:若兩臺電腦通信出了問題,若能ping通!大部分是防火牆的問題。一開始A做服務器,B做客戶端能實現;B做服務器,A做客戶端,A就不能連接到B。我換了一臺電腦A就能實現通信了。應該是A的防火牆需要設置。但是A的防火牆全關了也不能實現。真是很讓人搞不懂。

首先是服務器端代碼:

# -*- encoding: utf-8 -*-
import socket

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('listen at port :',port)
conn,addr = s.accept()
print('connected by',addr)

while True:
    data = conn.recv(1024)
    data = data.decode()#解碼
    if not data:
        break
    print('recieved message:',data)
    send = raw_input('return:')#python27要寫raw_input,python3.X可寫input
    conn.sendall(send.encode())#再編碼發送


conn.close()
s.close()


客戶端代碼:

# -*- encoding: utf-8 -*-
import socket
import sys
IP = '192.168.1.153' #填寫服務器端的IP地址
port = 40005 #端口號必須一致
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
    s.connect((IP,port))
except Exception as e:
    print('server not find or not open')
    sys.exit()
while True:
    trigger = raw_input("send:")
    s.sendall(trigger.encode())
    data = s.recv(1024)
    data = data.decode()
    print('recieved:',data)
    if trigger.lower() == '1':#發送1結束連接
        break
s.close()


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章