2017-08-15 141 views
0

我正在学习Java中的套接字编程,并编写了一个简单的程序用于将客户端服务器连接到本地主机上的套接字服务器。但是,每当我运行ClientServer程序时,都会给出连接错误:拒绝。未能将客户端服务器连接到本地网络

我附上了我编写的客户端代码和服务器代码,并附上了控制台输出。

package Classes; 

import java.io.IOException; 
import java.io.OutputStreamWriter; 
import java.net.Socket; 
import java.net.UnknownHostException; 

public class ClientSer { 

    /** 
    * @param args 
    * @throws IOException 
    * @throws UnknownHostException 
    */ 
    public static void main(String[] args) throws UnknownHostException, IOException { 
     // TODO Auto-generated method stub 

     Socket s = new Socket("localhost",1029); 
     OutputStreamWriter os = new OutputStreamWriter(s.getOutputStream()); 

     String str = "tEST mESSAGE"; 

     os.write(str); 
     os.flush(); 
    } 
} 

这是服务器代码:

package Classes; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.ServerSocket; 
import java.net.Socket; 

public class SocketSer { 
    public static void main(String args[]) throws Exception{ 
     ServerSocket ss = new ServerSocket(1029); 

     Socket s = ss.accept(); 

     BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); 

     String str = br.readLine(); 
     System.out.print(str); 
    } 
} 

控制台输出:

Exception in thread "main" java.net.ConnectException: Connection refused: connect 
at java.net.DualStackPlainSocketImpl.connect0(Native Method) 
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) 
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) 
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) 
at java.net.AbstractPlainSocketImpl.connect(Unknown Source) 
at java.net.PlainSocketImpl.connect(Unknown Source) 
at java.net.SocksSocketImpl.connect(Unknown Source) 
at java.net.Socket.connect(Unknown Source) 
at java.net.Socket.connect(Unknown Source) 
at java.net.Socket.<init>(Unknown Source) 
at java.net.Socket.<init>(Unknown Source) 
at Classes.ClientSer.main(ClientSer.java:18) 
+0

检查防火墙配置以确保它不阻止端口1029 –

+0

客户端尝试将绑定到与无法工作的服务器相同的端口。另外,您的客户端永远不会尝试连接到服务器。您的代码没有错误检查,所以调试非常困难。 –

+0

端口1029上的'ServerSocket' _listens_。客户端套接字使用可用的源端口将***绑定到端口1029。这里没有冲突。 –

回答

0

在服务器中,你知道它在听什么接口?

我会启动服务器,然后使用telnet尝试连接,而不是您的客户端。您可能会发现服务器不在本地主机上侦听。或者也许它正在监听每个接口(127.0.0.1加上你的本地网络)。我只是不知道我是否信任SocketServer(portNumber)。

我会考虑创建一个未绑定的SocketServer,然后使用socket.bind(),为它提供一个由主机和端口构造的InetSocketAddress对象。

相关问题