ldcf.net
当前位置:首页 >> jAvA程序SoCkEt通信时有时接收不到数据 >>

jAvA程序SoCkEt通信时有时接收不到数据

1、UDPRece的DatagramSocket需指定端口。 2、UdpSend的DatagramPacket的目标端口需要和UDPRece的DatagramSocket的端口一致。 import java.net.DatagramPacket; import java.net.DatagramSocket; public class UdpRece { public static void main...

1、UDPRece的DatagramSocket需指定端口。 2、UdpSend的DatagramPacket的目标端口需要和UDPRece的DatagramSocket的端口一致。 import java.net.DatagramPacket; import java.net.DatagramSocket; public class UdpRece { public static void main...

你不会是用serverSocket接收了一次就关掉了吧,这个要一直打开的,写成一个死循环。 或者有可能你建立的客户端线程只执行一次。

socket可以长时间存在,不关闭的话可以一直通话,你可以向里面输入信息,客户端或者服务端都能读取,干嘛需要不断的请求?

我修改了,直接用socket的输入输出流实现: 服务器端: import java.io.*; import java.net.*; public class server{ public static void main(String args[]) throws IOException { ServerSocket ss = null; Socket socket = null; try { ss=ne...

你发的字符串里面要有换行符就能收到了,你用的是readline(),遇到换行符就能返回。

直接用这种方式处理: while(true){socket = new Socket(("192.168.183.1", 9002);socket.setSoTimeout(5000);//5000ms = 5stry{socket.connect();}catch(IOException e){//这行写你提示通信失败提示continue;}}

//在server “写东西”的 while 外边,加上个flush。其他的不变。试一试。 while((line=bufIn.readLine())!=null){ System.out.println(line); bufOut.write(line.toUpperCase()); bufOut.newLine(); } bufOut.flush();//清空缓冲区。

那是因为你的接收操作和发送操作是交替执行的。 如果实现楼主之愿望,必将把接收数据交由一线程来执行即可。

具体原因不大清楚,我想可能是这样,你在每次进入循环都生成一个新的流对象,这个流对象在销毁回收的时候可能对socket的输出流产生了某种影响吧。 你可以这样来做啊 1. 使用StringBuilder,在循环里面将所有字符串合成一个字符串,最后退出的时候...

网站首页 | 网站地图
All rights reserved Powered by www.ldcf.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com