.accept()时,套接字无法连接到ServerSocket

时间:2015-08-12 13:04:30

标签: java serversocket

这是我的简单代码:

package NetworkProgramming;

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

public class CommunicationServer {

    public static void main(String [] args) throws IOException{
        ServerSocket server = new ServerSocket(1617);
        Socket socket = server.accept();
        System.out.println("Accepted");
    }

}

该程序只停留在server.accept()中。 我试过这样做:

Socket socket = new Socket(ip,port);

并且它成功了,但当我socket = server.accept();时它就卡住了!

该代码有什么问题? 提前谢谢!

编辑:请查看以下代码:

如果您正在编程服务器,那么这就是您打开套接字的方式:

ServerSocket MyService;
try {
   MyServerice = new ServerSocket(PortNumber);
    }
    catch (IOException e) {
       System.out.println(e);
    }

实现服务器时,还需要从ServerSocket创建一个套接字对象,以便侦听和接受来自客户端的连接。

Socket clientSocket = null;
try {
   serviceSocket = MyService.accept();
    }
catch (IOException e) {
   System.out.println(e);
}

来自javaworld

我做了同样的事情,但它不起作用......

2 个答案:

答案 0 :(得分:0)

首先运行服务器类CommunicationServer,然后在客户端类MyClient下运行。

 import java.io.*;
 import java.net.*;
 public class MyClient {

public static void main(String[] args) {
    try {
        Socket s = new Socket("localhost", 1617);

        DataOutputStream dout = new DataOutputStream(s.getOutputStream());

        s.close();
        dout.close();
    } catch (Exception e) {
        System.out.println(e);
    }
}}

答案 1 :(得分:0)

使用new Socket(ip,port)创建一个新的Socket,使用ip和端口连接到服务器。使用server.accept()让服务器等待连接的另一个解决方案永远不会完成并返回找到的套接字(如果有人连接的话)。这是你比较的两个完全不同的东西。查看API herehere