永发信息网

java socket client bind local addr & port的问题有结论没有?我也同问~

答案:2  悬赏:40  手机版
解决时间 2021-03-12 14:04
  • 提问者网友:伴风望海
  • 2021-03-12 07:13
java socket client bind local addr & port的问题有结论没有?我也同问~
最佳答案
  • 五星知识达人网友:轻熟杀无赦
  • 2021-03-12 08:42
已解决。。。因为给你找代码。。。原来的代码丢了。。。
socket = new Socket();
   socket.setReuseAddress(true);
   //来两个SocketAddress
   SocketAddress serversa = new InetSocketAddress(ip,port);
   SocketAddress sa = new InetSocketAddress(ip,port);
   //客户端绑定一个socket
   socket.bind(sa);
   //判断一下如果连不上,就让他一直连
   while (socket.isConnected() == false) {
    //将此套接字连接服务器,并制定一个超时值
    socket.connect(serversa, 500);
   }来自:求助得到的回答
全部回答
  • 1楼网友:十年萤火照君眠
  • 2021-03-12 09:01
socket有两种方式,
一种是Serversocket(服务端)和socket(客户端)的方式(基于tcp/ip的通信方式)
另一种是DatagramSocket(客户端和服务端)的方式(基于udp的通信方式)
第一种服务端需要绑定端口和ip,客户端监听服务端时需要知道服务端的端口和ip(可以不用绑定客户端的端口和ip,系统会自动分配端口给客户端),这种方式适合传输大型文件(几个G的游戏文件之类)这种可靠,但是速度慢
第二种服务端绑定端口和ip,客户端指定自身DatagramSocket的端口,将数据进行packet包的封装,必须要指定目的地(服务端)地址和端口(指定往哪发送包),调用DatagramSocket对象.send(DatagramPacket)方法,服务端监听接口(服务端指定的),接收到包后转换为byte[]用文件流,字符流什么的对数组操作,这种方式适合小型文件(mp3等等),或者缺失一点也无伤大雅的文件(视频),这种速度快,但是不可靠,可能导致缺失少量数据
再说下端口:
两个不同电脑上的软件通过特有的ip地址,端口好进行识别通信,所以需要绑定
最后:
码字不易,望采纳
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯