java socket通信服务器为什么只能接收到客户端第一次发送的消息,后面发送的都接收不到

客户端点击“查询”按钮向服务器发送请求,可是服务器只能返回一次结果,接下来无论如何怎么点按钮服务器都无法接收请求了,这是为什么?

你不会是用serverSocket接收了一次就关掉了吧,这个要一直打开的,写成一个死循环。
或者有可能你建立的客户端线程只执行一次。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-26
你的逻辑就是接受一次连接、然后退出
第2个回答  2012-06-28
服务器应该写一个类似死循环的结构,也就是永不推出,而且在每次循环开头都用一个接收请求(receive, accept)之类的阻塞方法等待客户端连接,循环体内对连接上的客户端做处理,就是这样(方法名不准确,大致意思是这样的):

while(true) {
socket= server_socket.accept (...); //没接到请求就一直堵塞
if( socket ! = null){
socket.getInputStream();
socket.getOutputStream();
.....
}
}本回答被提问者和网友采纳
第3个回答  2019-06-08
可能是接收一次后就关闭套接字了。你仔细看一下代码。看看是服务器还是客户端断开套接字或者退出了。

java socket通信服务器为什么只能接收到客户端第一次发送的消息,后面发 ...
你不会是用serverSocket接收了一次就关掉了吧,这个要一直打开的,写成一个死循环。或者有可能你建立的客户端线程只执行一次。

socket双向通信,为什么服务器只能接收一次客户端发送的消息
获取从客户端读入的字符串Stringresult=bufferedReader.readLine();这里会阻塞。你服务器端获取Socket以后需要另外启动一个线程去处理,你现在是单线程的服务器端设计,当然只能接收一次请求了。服务器端接收到Socket以后应该启动一个线程newThread(newRunable(){}).start();

socket双向通信,为什么服务器只能接收一次客户端发送的消息
Socket有两种主要的操作方式:面向连接的和无连接的。(TCP\/UDP)面向连接的Socket操作就像一部电话,Socket必须在发送数据之前与目的地的Socket取得连接,一旦连接建立了,Socket就可以使用一个流接口进行打开、读写以及关闭操作。并且,所有发送的数据在另一端都会以相同的顺序被接收。注意是相同的顺序 ...

mfc socket 若发送“abc”过去就只能接收到“a” 要是发“d”过去,就...
工程属性里设置编码为多字节,不要选默认的Unicode编码

Java ServerSocket accept运行一段时间不再接受新的连接了,这是为什么...
1、你使用netstat命令发现系统仍然在接收客户端发送的请求;2、你的程序没有处理这些请求;从这两条看,明显是程序已经停了,但是你的代码里是:1、while循环,只要你没有修改过receiveStatus,是不会自然结束的 2、你在while里立刻就try了,所以如果产生了Exception,是不可能结束的 结论:有3个可能:...

用java的Socket写的流服务端接收不到客户端发送的信息。
输出流写的方式不一致,输入流用的是readLine.是读带换行符的数据,而你的输出流是write,把write改成writeL¡ne就行了吧。

java socket 两个客户端通信问题!
java socket有两种方式。一种是 UDP 这个可以直连,不需要服务器。一种是TCP 这个是肯定要能过服务器来通信的。所以你说的。链接建立完毕后不再通过服务器!这个可以实现,但会麻烦一些。1.先说一下简单的点的吧。用TCP的方式。你所有的消息都是发给服务器。包含你的IP及通信端口,及对方的IP...

Java:服务器能主动向客户端发送消息吗?
不能,服务端只有接受到客户端的请求,才能往客户端发送信息,让客户端间隔一段时间就访问次服务端。

Socket编程,为什么客户端无法接收来自服务器的数据
第二:不管是客户端还是服务端在通过Socket读取数据的时候,在你的数据传输完成后,发送一个结束标记(比如:end),这样在你的 while循环里面判断一下数据是否已经传输完毕,完毕后跳出循环,否则由于你的程序就会一直阻塞在 readLine()这里,因为你的 socket还没有断开,会一直等待你写数据。你说的有道理,...

Java sockt如何在客户端异步接收服务器返回值? 高手!
服务端接收到客户端的数据后,会在Server得到一个类似client的socket对象,数据是直接返回这个这个对象的,那么client只需要用发送的时候使用的socket对象接收就可以了

相似回答