java Socket编程中,为什么监听多个端口时出现有一个端口无法接受到信息,需要用到线程吗
Stringstr2=newRecSocket(21000).recString;Stringstr3=newRecSocket(31000).recString;pub...
String str2 = new RecSocket(21000).recString; String str3 = new RecSocket(31000).recString; public class RecSocket extends DatagramSocket{ String recString; public RecSocket(int in)throws Exception{ DatagramSocket dSocket = new DatagramSocket(in); byte[] buf = new byte[1024]; DatagramPacket p = new DatagramPacket(buf,buf.length); dSocket.receive(p); buf = p.getData(); dSocket.close() }
String str2 = new RecSocket(21000).recString;
String str3 = new RecSocket(31000).recString;
主机1监听21000端口(主机2的返回值),31000(主机3返回的值)
请大神支教 展开
String str2 = new RecSocket(21000).recString;
String str3 = new RecSocket(31000).recString;
主机1监听21000端口(主机2的返回值),31000(主机3返回的值)
请大神支教 展开
2013-05-16 · 知道合伙人数码行家
关注
展开全部
您好,提问者:
其实线程的问题还是很难解决的,因为是随机的 。
但是也不是没有解决办法,是这样的,有些功能是必须用到线程的,如果不用线程的话,可能会有接收不到的数据、停止后台超时等错误,建议使用线程。。。
举例:比如坦克大战、扑克牌,不用线程是无法完成的,也不是无法完全,就是会数据接收不到。
其实线程的问题还是很难解决的,因为是随机的 。
但是也不是没有解决办法,是这样的,有些功能是必须用到线程的,如果不用线程的话,可能会有接收不到的数据、停止后台超时等错误,建议使用线程。。。
举例:比如坦克大战、扑克牌,不用线程是无法完成的,也不是无法完全,就是会数据接收不到。
更多追问追答
追问
对啊,就是接受不到的问题
就是说现在两台主机同时返回到21000,,31000号端口时
String str2 = new RecSocket(21000).recString;
String str3 = new RecSocket(31000).recString;
str3会丢失,那该如何解决呢
追答
原因:
1、cpu忙不过来,如果数据量更大,丢包的可能性更大。
2、建议使用多线程,虽然cpu占用高点,但是。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询