请问UDP协议不能在同一个IP地址上通过两个端口完成双向传输吗?

qq_35291968 2016-06-12 08:47:46
新手,想用UDP编写一个双向通信的小程序。代码如下
服务器端
import java.net.*;
import java.io.*;
public class UDPServer{
public static void main(String[] args){
new Send2().start();
new Receive2().start();
}
}

class Send2 extends Thread{
public void run(){
try
{
InputStreamReader is = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(is);
DatagramSocket ds = new DatagramSocket(1234);
while(true){
String st = br.readLine();
byte[] buff = st.getBytes();
DatagramPacket dp = new DatagramPacket(buff,buff.length,new InetSocketAddress("192.168.1.106",6666));
ds.send(dp);
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}

class Receive2 extends Thread{
public void run(){
try
{
DatagramSocket ds = new DatagramSocket(6667);
while(true){
byte[] buff = new byte[64];
DatagramPacket dp = new DatagramPacket(buff,0,buff.length);
ds.receive(dp);
System.out.println("Client: "+new String(buff,0,buff.length));
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
客户端
import java.net.*;
import java.io.*;
public class UDPClient{
public static void main(String[] args){
new Send1().start();
new Receive1().start();
}
}

class Send1 extends Thread{
public void run(){
try
{
InputStreamReader is = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(is);
DatagramSocket ds = new DatagramSocket(1235);
while(true){
String st = br.readLine();
byte[] buff = st.getBytes();
DatagramPacket dp = new DatagramPacket(buff,buff.length,new InetSocketAddress("192.168.1.106",6667));
ds.send(dp);
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}

class Receive1 extends Thread{
public void run(){
try
{
DatagramSocket ds = new DatagramSocket(6666);
while(true){
byte[] buff = new byte[64];
DatagramPacket dp = new DatagramPacket(buff,0,buff.length);
ds.receive(dp);
System.out.println("Client: "+new String(buff,0,buff.length));
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
客户端的代码和服务端的代码几乎是相同的。

出现了Address already in use Exception
请问为什么会出现这个样子呢?


简而言之
如果服务器端通过192.168.1.1的1端口发送,2端口接收.
而客户端通过192.168.1.的1端口接收,2端口发送
为什么会出现Address already in use Exception呢??
求各位大神帮忙解答
...全文
516 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_35291968 2016-06-18
  • 打赏
  • 举报
回复
求各位大神解答
qq_35291968 2016-06-17
  • 打赏
  • 举报
回复
求各位大神解答
qq_35291968 2016-06-14
  • 打赏
  • 举报
回复
引用 4 楼 hemowolf 的回复:
楼主在 main 里启动了 Send2,也启动了 Receiver2 当启动第二个的时候必然会和之前已经启动的存在端口冲突啊
我用了两个端口啊,一个6666一个6667,只不过是一个IP地址。这样也会发生冲突吗?
qq_35291968 2016-06-13
  • 打赏
  • 举报
回复
是的,使用的是同一台电脑,同一个IP的两个端口,一个端口数据由服务端发送到客户端,另一个端口数据由客户端发送到服务端。
小灰狼 2016-06-13
  • 打赏
  • 举报
回复
客户机和服务器是运行在同一台电脑上吗?
小灰狼 2016-06-13
  • 打赏
  • 举报
回复
楼主在 main 里启动了 Send2,也启动了 Receiver2 当启动第二个的时候必然会和之前已经启动的存在端口冲突啊
qq_35291968 2016-06-13
  • 打赏
  • 举报
回复
引用 1 楼 hemowolf 的回复:
客户机和服务器是运行在同一台电脑上吗?
见上

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧