Java套接字不工作。来自操作系统概念的示例-Abraham Silberschatz
关于书中的一个例子,我有一个问题。更新第8版中的这个示例在第3.6节“客户机-服务器系统中的通信”中 我试图运行该部分中的示例代码,但它并没有完全按照预期工作。当我完全按照书中所写的方式运行代码时,客户机请求在localhost ip地址127.0.0.1处创建一个套接字。这个很好用 但是,当我将客户机和服务器代码放在不同的PC上,并将服务器的客户机IP地址更改为contact到192.xxx.xxx.xxx时,客户机代码只是挂起,没有返回日期。有人知道为什么会这样吗 以下是代码片段: 服务器:Java套接字不工作。来自操作系统概念的示例-Abraham Silberschatz,java,sockets,localhost,Java,Sockets,Localhost,关于书中的一个例子,我有一个问题。更新第8版中的这个示例在第3.6节“客户机-服务器系统中的通信”中 我试图运行该部分中的示例代码,但它并没有完全按照预期工作。当我完全按照书中所写的方式运行代码时,客户机请求在localhost ip地址127.0.0.1处创建一个套接字。这个很好用 但是,当我将客户机和服务器代码放在不同的PC上,并将服务器的客户机IP地址更改为contact到192.xxx.xxx.xxx时,客户机代码只是挂起,没有返回日期。有人知道为什么会这样吗 以下是代码片段: 服务器:
import java.net.*;
import java.io.*;
public class DateServer
{
public static void main(String [] args)
{
try
{
ServerSocket sock = new ServerSocket(6013);
// now listen for connections
while(true)
{
Socket client = sock.accept();
PrintWriter pout = new PrintWriter(client.getOutputStream(), true);
// write the Date to the socket
pout.println(new java.util.Date().toString());
// close the socket and resume listening for connections
client.close();
}
}
catch (IOException ioe)
{
System.err.println(ioe);
}
}
}
客户:
import java.net.*;
import java.io.*;
public class DateClient
{
public static void main(String[] args)
{
try
{
//make connection to server socket
Socket sock = new Socket("192.xxx.xxx.xxx", 6013);
InputStream in = sock.getInputStream();
BufferedReader bin = new BufferedReader(new InputStreamReader(in));
// read the date from the socket
String line;
while ( (line = bin.readLine()) != null)
{
System.out.println(line);
}
// close the socket connections
sock.close();
}
catch (IOException ioe)
{
System.err.println(ioe);
}
}
}
IP=127.0.0.1时的输出:
C:\Users\xxxxx\Documents\Dropbox\practice>java DateClient
Sat Feb 07 22:46:59 PST 2015
C:\Users\xxxxx\Documents\Dropbox\practice>
IP=192.xxx.xxx.xxx的输出:
C:\Users\xxxxx\Documents\Dropbox\practice>java DateClient
*nothing here. But program doesn't terminate*
可能是防火墙规则?从ping开始,如果成功的话,从客户端使用nmap、telnet等检查端口是否打开。可能有很多方面,从防火墙到防病毒。计算机在同一局域网上吗?你能从客户机ping服务器的IP吗?ping只能在一个方向工作。从台式机到笔记本电脑。不是从笔记本电脑到台式机。这些计算机在同一个大学局域网上。我在墙上的以太网端口和我的两台电脑之间有一个交换机。它们都在同一个子网中,掩码为255.255.255.0。你是说客户端真的会永远阻塞吗?如果不是的话,客户端最终会发生什么?嗯,我没有永远测试它。但是客户挂了几分钟。我会再试一次,让它开一段时间,因为我现在不处理那个问题。我用收到的结果更新了主要帖子。