我正在尝试在两台计算机之间进行通信,一台是Mac,另一台是Linux。
我在服务器端的代码:
import os
from socket import *
host = "192.168.1.47"
port = 10000
buf = 1024
address = (host, port)
UDPSock = socket(AF_INET, SOCK_DGRAM)
UDPSock.bind(address)
print ("Waiting to receive messages...")
while True:
(data, address) = UDPSock.recvfrom(buf)
print("Received message: " + data)
if data == "exit":
break
UDPSock.close()
os._exit(0)
在客户端,我有:
import os
from socket import *
host = "192.168.1.47" # set to IP address of target computer
port = 10000
addr = (host, port)
UDPSock = socket(AF_INET, SOCK_DGRAM)
while True:
data = raw_input("Enter message to send or type 'exit': ")
UDPSock.sendto(data, addr)
if data == "exit":
break
UDPSock.close()
os._exit(0)
服务器一直在等待请求,虽然我发送了一些在客户端服务器中输入的消息但是无法接收它。主机地址是我的mac ip地址,并要求另一台计算机连接到此ip。谁能帮助我理解我哪里出错了。我提到了与此主题相关的其他帖子,但没有适当的解决方案。感谢
答案 0 :(得分:0)
首先:使用相同的端口:)
您正在使用localhost地址在客户端上发送消息。使用客户端的服务器地址。
对于服务器:
ip =" localhost"或者"服务器ip"
port = 10000
对于客户:
ip ="服务器ip"
port = 10000
答案 1 :(得分:0)
它在同一台主机上为我工作。因为我在字符串之前有一个“b”,因为我以字节为单位更改了字符串。
< string> .encode()以字节为单位更改字符串
< bytes> .decode()更改字符串
中的字节
您需要了解是否使用UDP,两台计算机之间没有连接。因此,如果要更改使用TCP套接字,防火墙将阻止链接。
我建议你使用python 3,如果可以的话,打印这个语法很酷:
print("{}".format(msg_recv))
您以格式(..)添加变量,它们将替换“{}”。
客户:
import os
from socket import *
host = "127.0.0.1" # set to IP address of target computer
port = 10000
addr = (host, port)
UDPSock = socket(AF_INET, SOCK_DGRAM)
while True:
data = input("Enter message to send or type 'exit': ")
UDPSock.sendto(data.encode(), addr)
if data == "exit":
break
UDPSock.close()
os._exit(0)
服务器:
import os
from socket import *
host = "127.0.0.1"
port = 10000
buf = 1024
address = (host, port)
UDPSock = socket(AF_INET, SOCK_DGRAM)
UDPSock.bind(address)
print ("Waiting to receive messages...")
while True:
(data, address) = UDPSock.recvfrom(buf)
print("Received message: " + data.decode())
if data == b"exit":
break
UDPSock.close()
os._exit(0)