猿问

为什么我写的javaSocket通信 服务端接收不到?

为什么我写的javaSocket通信,客户端连接服务端了,然后客户端发送消息给服务端,服务端接收,这个时候服务端接收的文件获取不到,只有等到客户端关闭的时候,服务端才能接到。

这是代码


package server;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
public static void main(String[] args){
//1.创建一个服务器端socket即serversocket指定绑定的端口并监听此端口
ServerSocket serverSocket=null;
String info=null;
InputStream is=null;
OutputStream os=null;
try {
serverSocket = new ServerSocket(8888);
//2.调用accept()方法开始监听,等待客户端的连接
//让客户端一直访问
Socket socket =null;
while(true){
socket = serverSocket.accept();
InetAddress ss = socket.getInetAddress();
System.out.println(ss.getHostAddress());

//3.获取输入流,并读取客户端信息
is=socket.getInputStream();//字节输入流
os=socket.getOutputStream();
DataOutputStream dos=new DataOutputStream(os);
DataInputStream dis=new DataInputStream(is);
//	InputStreamReader isr=new InputStreamReader(is);//将字节流转化为字符输入流
//	BufferedReader br=new BufferedReader(isr);//为输入流添加缓冲
String s=null;
s=dis.readUTF();
while((s=dis.readUTF())!=null){
System.out.println("我是服务器,客户端说"+s);
System.out.println("IP"+socket.getInetAddress());
System.out.println("port"+socket.getPort());
}
if(socket.isClosed()){
System.out.println("关闭");
}else{
System.out.println("没关闭");
}
//4.获取输出流,响应客户端的请求
dos.writeUTF("hello");
dis.close();
socket.close();
}
} catch (IOException e) {
System.out.println("客户端异常断开");
}

}
}

小弟跪求大家帮帮忙了!

qq_风云_13
浏览 2593回答 2
2回答

后台学前端

肯定要flush(回去仨)

好帮手慕珊

有可能没清空缓冲区,在dos.writeUTF("hello");这条语句后面调用dos.flush();方法试试
随时随地看视频慕课网APP

相关分类

Java
我要回答