为什么总在客户端阻塞System.err.print(in.readLine());C# 服务器端
==================================================
IPAddress ServerIp=GetServerIP();
IPEndPoint iep=new IPEndPoint(ServerIp,8000);
socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
byte[] byteMessage=new byte[100];
string iepString=iep.ToString();
Console.WriteLine(iepString);
socket.Bind(iep);
socket.Listen(5);
while(true)
{
try
{
Socket newSocket=socket.Accept();
while (true){
newSocket.Receive(byteMessage);
string sTime = DateTime.Now.ToShortTimeString ( ) ;
string msg=sTime+":"+"Message from:";
msg+=newSocket.RemoteEndPoint.ToString()+Encoding.Default.GetString(byteMessage);
Console.WriteLine(msg.ToString());
Byte[] sendString = Encoding.ASCII.GetBytes("ok".ToCharArray());
newSocket.Send(sendString);
// newSocket.Shutdown(SocketShutdown.Send);
}
newSocket.Close();
}
catch(SocketException ex) { Console.WriteLine(ex); //String iepString+=ex.ToString(); } } // while(byteMessage!=null);
===============================================
java 客户端
Socket aClient = null;
aClient = new Socket("192.168.5.208", 8221); // InetAddress.getLocalHost()
try {
BufferedReader input = new BufferedReader(new InputStreamReader(
System.in));
BufferedReader in = new BufferedReader(new InputStreamReader(
aClient.getInputStream()));
PrintWriter out = new PrintWriter(new OutputStreamWriter(aClient
.getOutputStream())); String clientString = null;
String serverString = null;
System.out.println("hello!enter bye to exit.");
out.println("okkkkkkkkkk");
out.flush();
boolean done = false;
while (!done) {
// out.println("okkkkkkkkkk");
// out.flush();
serverString = "zzzzzzz";
System.err.print(in.readLine());
Thread.sleep(1000);
if (serverString != null)
System.out.println(" Server:" + serverString);
System.out.println(" client:");
clientString = " data from client ";
if (clientString != null) {
out.println(clientString);
out.flush();
}
}
in.close();
out.close();
} catch (Exception e) {
System.out.println(e.getMessage());
} finally {
aClient.close();
}
==================================================
IPAddress ServerIp=GetServerIP();
IPEndPoint iep=new IPEndPoint(ServerIp,8000);
socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
byte[] byteMessage=new byte[100];
string iepString=iep.ToString();
Console.WriteLine(iepString);
socket.Bind(iep);
socket.Listen(5);
while(true)
{
try
{
Socket newSocket=socket.Accept();
while (true){
newSocket.Receive(byteMessage);
string sTime = DateTime.Now.ToShortTimeString ( ) ;
string msg=sTime+":"+"Message from:";
msg+=newSocket.RemoteEndPoint.ToString()+Encoding.Default.GetString(byteMessage);
Console.WriteLine(msg.ToString());
Byte[] sendString = Encoding.ASCII.GetBytes("ok".ToCharArray());
newSocket.Send(sendString);
// newSocket.Shutdown(SocketShutdown.Send);
}
newSocket.Close();
}
catch(SocketException ex) { Console.WriteLine(ex); //String iepString+=ex.ToString(); } } // while(byteMessage!=null);
===============================================
java 客户端
Socket aClient = null;
aClient = new Socket("192.168.5.208", 8221); // InetAddress.getLocalHost()
try {
BufferedReader input = new BufferedReader(new InputStreamReader(
System.in));
BufferedReader in = new BufferedReader(new InputStreamReader(
aClient.getInputStream()));
PrintWriter out = new PrintWriter(new OutputStreamWriter(aClient
.getOutputStream())); String clientString = null;
String serverString = null;
System.out.println("hello!enter bye to exit.");
out.println("okkkkkkkkkk");
out.flush();
boolean done = false;
while (!done) {
// out.println("okkkkkkkkkk");
// out.flush();
serverString = "zzzzzzz";
System.err.print(in.readLine());
Thread.sleep(1000);
if (serverString != null)
System.out.println(" Server:" + serverString);
System.out.println(" client:");
clientString = " data from client ";
if (clientString != null) {
out.println(clientString);
out.flush();
}
}
in.close();
out.close();
} catch (Exception e) {
System.out.println(e.getMessage());
} finally {
aClient.close();
}
如果像你那样的可能接收到一个连接请求就不能处理其他请求了