黑马程序员技术交流社区
标题:
upt多线程问题,我这个代码怎么没效果啊
[打印本页]
作者:
谭荣强
时间:
2014-3-30 20:38
标题:
upt多线程问题,我这个代码怎么没效果啊
只能发送,却收不到
import java.io.*;
import java.net.*;
class sent implements Runnable
{
private DatagramSocket ds;
public sent(DatagramSocket ds)
{
this.ds=ds;
}
public void run()//throws Exception//被覆盖的方法未抛出Exception
{
try
{
BufferedReader buff = new BufferedReader(new InputStreamReader(System.in));
String line =null;
while ((line=buff.readLine())!=null)
{
if (line.equals("over"))
{
break;
}
byte[] buf = line.getBytes();
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.255"),10002);
ds.send(dp);
}
buff.close();
}
catch (Exception e)
{
throw new RuntimeException("发送失败");
}
}
}
class rec implements Runnable
{
private DatagramSocket ds;
public rec(DatagramSocket ds)
{
this.ds= ds;
}
public void run()
{
try
{
while (true)
{
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
ds.receive(dp);
String ip=dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
int port = dp.getPort();
System.out.println(data+"::"+ip+"::"+port);
}
}
catch (Exception e)
{
throw new RuntimeException("接受失败");
}
}
}
class day2310
{
public static void main(String[] args) throws Exception
{
DatagramSocket ds = new DatagramSocket();
DatagramSocket ds1 = new DatagramSocket(10002);
sent s = new sent(ds);
rec r = new rec(ds1);
Thread t1 = new Thread(s);
Thread t2 = new Thread(r);
t1.start();
t2.start();
}
}
作者:
一诺千金
时间:
2014-3-30 22:45
同时运行了两个单独的线程,所以客户端服务端没有半毛钱关系了。应该是服务端把客服端请求并处理的代码封装了成为线程,在多个客户端并发请求是读到请求,运行RUn方法,也就是加一个处理线程。客户端弄成单独的线程是何意?思路有点崴泥应该是。我再看看
作者:
谭荣强
时间:
2014-3-30 22:53
一诺千金 发表于 2014-3-30 22:45
同时运行了两个单独的线程,所以客户端服务端没有半毛钱关系了。应该是服务端把客服端请求并处理的代码封装 ...
老毕视频的例子,一个线程发数据,一个线程就收数据,读不出来。
作者:
╰つ
时间:
2014-3-30 23:03
一诺千金 发表于 2014-3-30 22:45
同时运行了两个单独的线程,所以客户端服务端没有半毛钱关系了。应该是服务端把客服端请求并处理的代码封装 ...
哥们,貌似这个是udp协议,是数据包传输的,你怎么说到tcp协议,客户端服务端去了,真心不理解,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2