0

我要连接的网络中有两台 PC。其中一个应该通过 TCP 向另一个发送通知。一台 PC 我有一个“服务器”(Python 脚本)套接字,它等待“客户端”(Jar 文件)发送一个特定的字符串,然后它给我一个通知。当我在一台 PC 上试用它时,它工作得非常好。但是当我想要执行预期的操作时,“客户端”PC.jar会给我一个错误,即连接被拒绝。我是否必须在另一台 PC 上打开特定端口,否则可能会导致问题?一台 PC 运行 Fedora,另一台运行 Windows 8

“服务器代码”

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.bind(("", 5005)) 
s.listen(1)

try: 
    while True: 
        komm, addr = s.accept() 
        while True: 
            data = komm.recv(1024)
            if data == "$":
                noty()
            if not data: 
                komm.close() 
                break
finally: 
    s.close()

“客户”代码

public static void main(String[] args) throws Exception {
Socket socket = new Socket("192.168.178.25", 5005); 
OutputStream out = socket.getOutputStream();
String dat = "$";
    out.write(dat.getBytes());
socket.close();
}
4

2 回答 2

0

如果其权限被拒绝,那么某些东西会阻止您与计算机的连接。我会尝试打开一个端口,看看是否可行。如果您想要 java 套接字的示例,可以查看我的SUPER Tic-Tac-Toe Multiplayer,它使用 java 套接字向客户端发送字符串,以表示客户端应采取的操作。

于 2013-11-01T00:11:25.903 回答
0

您的服务器可能绑定到错误的接口,

打电话

s.bind(("", 5005)) 

不设置接口将允许程序选择它将连接到的 IP 地址/接口。

由于您的客户端正在尝试连接,("192.168.178.25", 5005);您可能希望将 IP 地址放入绑定调用中,以防止服务器选择错误的 ip 接口。

例子:

s.bind(("192.168.178.25", 5005)) 
于 2013-11-01T03:56:31.777 回答