如果分开
客户端---发送消息到---> 服务器:工作正常!
如果分开
服务器---发送消息到--->客户端:工作正常!
但是当两者在一起时:
客户端---发送消息到--->服务器
服务器---发送消息到--->客户端
没有任何工作!
这是服务器端:
import java.io.*;
import java.net.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class MyServer
{
private final static int port = 8000;
private static String hostname = "";
private static String hostIP ="";
public static void main(String[] args )
{
ServerSocket serverSocket=null;
try {
// get host information
hostname = InetAddress.getLocalHost().getHostName();
hostIP = InetAddress.getLocalHost().getHostAddress();
// display server information
System.out.println("MyServer started on "+hostname+" with IP: "+hostIP + " on the port number: " + port);
serverSocket = new ServerSocket(port);
}
catch(IOException e)
{
e.printStackTrace();
}
while(true)
{
ClientWorker w;
try
{
w = new ClientWorker(serverSocket.accept());
Thread t = new Thread(w);
t.start();
}
catch(IOException e)
{
e.printStackTrace();
break;
}
}
}
}
class ClientWorker implements Runnable
{
Socket incoming;
public ClientWorker(Socket incoming)
{
this.incoming = incoming;
}
public void run()
{
String request = null;
BufferedReader in = null;
try {
in = new BufferedReader(new InputStreamReader(incoming.getInputStream()));
} catch (IOException e) {
e.printStackTrace();
}
try {
request = in.readLine();
System.out.println("request =" + request);
} catch (IOException e) {
e.printStackTrace();
}
PrintWriter out = null;
try {
out = new PrintWriter(incoming.getOutputStream(),true);
} catch (IOException e) {
e.printStackTrace();
}
out.println("The command is not readable");
}
}
这是客户端:
import java.io.*;
import java.net.*;
public class MyClient2
{
public static void main(String[] args)
{
String answer = null;
if (args.length != 1){
System.out.println("Usage: MyClient serverHostname");
System.exit(0);
}
try
{
Socket socket = new Socket (args[0], 8000);
PrintWriter out = new PrintWriter(socket.getOutputStream(),true);
out.print("TIME");
System.out.println("Request has been send");
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
answer = in.readLine();
System.out.println("The answer is: "+answer);
in.close();
out.close();
socket.close();
}
catch (Exception e)
{
System.out.println("Make sure the server is running and try again");
}
}
}
请看一下,我很感激你的意见。干杯