我正在尝试创建到Web服务器的套接字连接。
import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Connection{
public final static int PORT = 1337;
public Connection(){
ServerSocket svrSocket = null;
try{
svrSocket = new ServerSocket(PORT);
System.out.println("Conected to: " + PORT);
Socket con = null;
while(true)
{
try{
con = svrSocket.accept();//on this part the program stops
System.out.println("Client request accepted");
PrintWriter out = new PrintWriter(con.getOutputStream());
out.flush();
}catch(IOException ex)
{
ex.printStackTrace();
}
}
}catch(IOException ex)
{
System.err.println(ex);
System.out.println("Unable to attach to port");
}
}
}
客户端请求con = svrSocket.accept();
未运行。我这样说是因为此行之后的消息不显示。
为什么它不接受客户端请求,是否可以使用Web浏览器测试服务器?请原谅我糟糕的编程风格。
谢谢。
答案 0 :(得分:1)
您需要让客户端连接到您的服务器,以便您的服务器能够接受连接,直到发生这种情况,代码将在该行等待。
如果您运行代码实例然后编译并运行此代码(当您的代码也在运行时),您会发现您收到客户端请求已接受消息,如果由于端口而获得IOException,则更改当你在cmd中调用netstat -o
时,它们中的端口都会出现。
import java.io.*;
import java.net.*;
public class TestCon
{
public static void main(String[] args)
{
Socket echoSocket = null;
PrintWriter out = null;
BufferedReader in = null;
try {
echoSocket = new Socket("127.0.0.1", 1337);
out = new PrintWriter(echoSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(echoSocket.getInputStream()));
out.println("Hello Server!");
System.out.println(in.readLine());
out.close();
in.close();
echoSocket.close();
} catch (UnknownHostException e) {
System.err.println("Host Unknown");System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection.");System.exit(1);
}
}
}
答案 1 :(得分:0)
客户端请求con = svrSocket.accept();没有跑。
这不是客户端连接请求代码。这是服务器设置自己监听此端口并阻塞,直到收到传入连接。创建一个新的客户端程序或启动一个等待服务器启动然后使用
连接的新Thread
Socket clientSocket = new Socket ("127.0.0.1", 1337);