我的java聊天客户端仅在数据流关闭时发送字符串
我创建了一个java聊天应用程序(客户端和服务器端) 当我在局域网上时,一切正常(使用服务器的局域网IP地址进入我的客户机) 但是,当我在客户机中使用服务器的Internet地址时,只有在关闭客户机的输出数据流时才会发送字符串(并且所有字符串都会同时发送) 下面是我的代码的一个快速快照(在下面的示例中,我将端口从6791向前移动到6790) 我的服务器(线程): 我的客户:我的java聊天客户端仅在数据流关闭时发送字符串,java,sockets,stream,Java,Sockets,Stream,我创建了一个java聊天应用程序(客户端和服务器端) 当我在局域网上时,一切正常(使用服务器的局域网IP地址进入我的客户机) 但是,当我在客户机中使用服务器的Internet地址时,只有在关闭客户机的输出数据流时才会发送字符串(并且所有字符串都会同时发送) 下面是我的代码的一个快速快照(在下面的示例中,我将端口从6791向前移动到6790) 我的服务器(线程): 我的客户: InetAddress dnsName; Socket clientSocket; PrintWriter out; dn
InetAddress dnsName;
Socket clientSocket;
PrintWriter out;
dnsName = InetAddress.getByName("myAddress.me");
clientSocket = new Socket(dnsName.getHostAddress(), 6791);
Thread.sleep(10);
out = new PrintWriter(clientSocket.getOutputStream(), true );
int i=140;
while (i>130){
try {
out.println(Integer.toString(i));
out.flush();
Thread.sleep(200);
}
catch(Exception e) {
e.printStackTrace();
}
i--;
}
out.flush();
out.close();
clientSocket.close();
我尝试过数据流,没什么可做的。
只有在客户端调用out.close()
时,我的服务器才会接收字符串
在互联网上,数据流必须关闭才能发送数据,这有什么原因吗?有办法解决这个问题吗?我做错什么了吗
InetAddress dnsName;
Socket clientSocket;
PrintWriter out;
dnsName = InetAddress.getByName("myAddress.me");
clientSocket = new Socket(dnsName.getHostAddress(), 6791);
Thread.sleep(10);
out = new PrintWriter(clientSocket.getOutputStream(), true );
int i=140;
while (i>130){
try {
out.println(Integer.toString(i));
out.flush();
Thread.sleep(200);
}
catch(Exception e) {
e.printStackTrace();
}
i--;
}
out.flush();
out.close();
clientSocket.close();