java程序Socket通信时有时接收不到数据

现有一套java程序,主要功能为库存管理与数据通讯,数据通讯是通过wifi接收前端设备发来的数据,java中通过ServerSocket组件实现此功能。现在的问题是,有时... 现有一套java程序,主要功能为库存管理与数据通讯,数据通讯是通过wifi接收前端设备发来的数据,java中通过ServerSocket组件实现此功能。现在的问题是,有时候前端设备发过来的数据接收不到,并且没有任何异常抛出,但此时若使用串口助手对端口(前端设备发送数据时指向的IP和端口是固定的,端口是5001)进行监测,在串口助手中可以正常接收到数据,也就是说java服务端中的Socket没有正常工作。此问题出现的时间没有任何规律,有时候一天现一两次,有时侯一天也不出现一次。java程序使用myEclipse2014开发,tomcat7.0运行,服务器win2003server,数据库sqlserver2008。 展开
 我来答
若以下回答无法解决问题,邀请你更新回答
sddf643
2018-03-19 · TA获得超过1180个赞
知道大有可为答主
回答量:1298
采纳率:87%
帮助的人:158万
展开全部
1、UDPRece的DatagramSocket需指定端口。
2、UdpSend的DatagramPacket的目标端口需要和UDPRece的DatagramSocket的端口一致。

import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UdpRece {
public static void main(String[] args) throws Exception {
// 1.创建udp Socket,建立端点
DatagramSocket ds = new DatagramSocket(20000);
// 2.定义数据包。用于存储数据。
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
// 3.通过服务的receive方法将数到数据存入数据包中
ds.receive(dp);
// 4.通过数据包的方法获取其中的数据。
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(), 0, dp.getLength());
int port = dp.getPort();
System.out.println(ip + "::" + data + "::" + port);
// 4.关闭资源
ds.close();
}
}

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UdpSend {
public static void main(String[] args) throws Exception {
// 1.创建udp服务,通过DatagramSocket对象
DatagramSocket ds = new DatagramSocket(10000);
// 2.确定数据,并封装成数据包。
// DatagramPacket(byte[] buf, int length, InetAddress address, int port)
// 构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
byte[] buf = "udp shu ju lai le".getBytes();
DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("192.168.1.100"),
20000);
// 3.通过Socket服务,将已有的数据包发送出去。通过send方法。
ds.send(dp);
// 4.关闭资源
ds.close();
}
}
追问
你的意思是要改成UDP方式来通信么,现在是TCP方式呀
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式