所以我编写了一个简单的Socket程序,它将客户端的消息发送到Server程序,并想知道测试它的正确程序是什么?我的客户端和服务器计算机都在Ubuntu 12.04上运行,我远程连接到它们。
对于我实例化客户端套接字(testSocket)时的客户端代码,我是否使用其IP地址和端口号或服务器IP地址和端口号?
以下是客户代码:
public static void main(String[] args) throws UnknownHostException, IOException
{
Socket testSocket = null;
DataOutputStream os = null;
DataInputStream is = null;
try
{
testSocket = new Socket("192.168.0.104", 5932);
os = new DataOutputStream(testSocket.getOutputStream());
is = new DataInputStream(testSocket.getInputStream());
}
catch (UnknownHostException e)
{
System.err.println("Couldn't find Host");
}
catch (IOException e)
{
System.err.println("Couldn't get I/O connection");
}
if (testSocket != null && os != null && is != null)
{
try
{
os.writeBytes("Hello Server!\n");
os.close();
is.close();
testSocket.close();
}
catch (UnknownHostException e)
{
System.err.println("Host not found");
}
catch (IOException e)
{
System.err.println("I/O Error");
}
}
}
以下是Server的代码:
public static void main(String[] args)
{
String line = new String() ;
try
{
ServerSocket echoServer = new ServerSocket(5932);
Socket clientSocket = echoServer.accept();
DataInputStream is = new DataInputStream(clientSocket.getInputStream());
PrintStream os = new PrintStream(clientSocket.getOutputStream());
while (true)
{
line = is.readLine();
os.println(line);
}
}
catch (IOException e)
{
System.out.println(e.getMessage());
}
}
我是套接字的新手,不知道我应该看到什么。我在终端上编译了两个程序,但不确定我应该首先运行哪个程序还是需要同时启动?
由于
答案 0 :(得分:1)
您的服务器在无限循环中运行。避免这样做。 您必须重新启动计算机。
while (true)
{
line = is.readLine();
os.println(line);
}
试
while (!line.equals("Hello Server!"))
{
line = is.readLine();
os.println(line);
}
首先运行服务器。 echoServer.accept();等待连接。当它获得第一个连接时,
答案 1 :(得分:0)
http://docs.oracle.com/javase/tutorial/networking/sockets/这是一个关于如何使用套接字的简短java教程,您还可以学习如何创建一个可以同时接受多个连接的服务器。本教程解释了您始终需要首先启动服务器,这是合乎逻辑的。您应该使用线程来管理连接,然后关闭它们以便有效地使用资源