[英]Why server created using java socket doesn't not print data send from client (it dislays if client terminate)?
In example below I created one server which will only print whatever client is writing in a socket. 在下面的示例中,我创建了一个服务器,该服务器将仅打印客户端在套接字中写入的内容。 But I am not getting output as client enter data.
但是当客户端输入数据时,我没有得到输出。 If client terminate then I can see all the data client inserted in outputstream.
如果客户端终止,那么我可以看到所有在输出流中插入的数据客户端。 I am taking input from console at client and then write that data to server socket.
我从客户端的控制台获取输入,然后将该数据写入服务器套接字。
Server code: 服务器代码:
public class server {
public static void main(String[] args) throws Exception {
System.out.println("waiting");
ServerSocket s = new ServerSocket(9999);
Socket stemp = s.accept();
System.out.println("read comp");
InputStream is = stemp.getInputStream();
InputStreamReader ir = new InputStreamReader(is);
BufferedReader br = new BufferedReader(ir);
while(true)
{
String str = br.readLine();
if(str!=null)
{
System.out.println(str);
}
if(str.contains("exit"))
{
break;
}
}
stemp.close();
ir.close();
is.close();
br.close();
}
}
Client code: 客户代码:
public class client {
public static void main(String[] args) throws Exception {
String ip ="127.0.0.1";
int port = 9999;
Socket s1 = new Socket(ip, port);
OutputStream os = s1.getOutputStream();
OutputStreamWriter ow = new OutputStreamWriter(os);
BufferedWriter pw = new BufferedWriter(ow);
pw.write("I am ready");
Scanner s = new Scanner(System.in);
String str = s.nextLine();
System.out.println(str);
while(!str.contains("exit"))
{
pw.write(str);
pw.flush();
str = s.nextLine();
}
pw.close();
os.close();
ow.close();
s1.close();
}
}
In server
, br.readLine();
在
server
, br.readLine();
is used, waiting for end-of-line. 用于等待行尾。
In client, you have to send the eol in pw.write( str + '\\n' );
在客户端中,您必须在
pw.write( str + '\\n' );
发送eol pw.write( str + '\\n' );
. 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.