黑马程序员技术交流社区
标题:
第23天的视频中的一个练习,有个小疑问
[打印本页]
作者:
wenbaoxing
时间:
2013-10-26 10:08
标题:
第23天的视频中的一个练习,有个小疑问
本帖最后由 wenbaoxing 于 2013-10-28 07:31 编辑
import java.io.*;
import java.net.*;
/*
第23天的视频中的一个练习
需求:编写一个聊天的小程序
*/
//定义发送端,实现Runnable,覆盖run方法
class Send implements Runnable
{
private DatagramSocket ds;
//定义构造函数,发送端一建立,就要有socket对象
public Send(DatagramSocket ds)
{
this.ds=ds;
}
public void run()
{
try
{
//获取键盘录入
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
String line=null;
//在第一次键盘录入的时候,为什么不能输入空呢?我想让下面的while语句第一次的时候line就是空,怎么办?
while ((line=bufr.readLine())!=null)
{
if("886".equals(line))
break;
byte[] buf=new byte[1024];
buf=line.getBytes();
DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.255"),10002);
ds.send(dp);
}
//将886也发送出去
if(line!=null)
{
byte[] buf=new byte[1024];
buf=line.getBytes();
DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.255"),10002);
ds.send(dp);
}
ds.close();
}
catch (Exception e)
{
new RuntimeException("发送端失败!!!");
}
}
}
//定义接收端
class Rece implements Runnable
{
private DatagramSocket ds;
public Rece(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());
System.out.println(ip+":"+data);
}
}
catch (Exception e)
{
new RuntimeException("接收端失败!!!");
}
}
}
//测试发送端和接收端
class ChatDemo
{
public static void main(String[] args) throws Exception
{
DatagramSocket sendDs=new DatagramSocket();
DatagramSocket receDs=new DatagramSocket(10002);
new Thread(new Send(sendDs)).start();
new Thread(new Rece(receDs)).start();
}
}
复制代码
作者:
Jim-剣◆﹏
时间:
2013-10-26 21:01
你的疑问是“在第一次键盘录入的时候,为什么不能输入空呢?我想让下面的while语句第一次的时候line就是空,怎么办?”这个吧
你while的循环判断条件里面都判断line!=null,那你怎么怎么为空呢
作者:
wenbaoxing
时间:
2013-10-26 21:16
Jim-剣◆﹏ 发表于 2013-10-26 21:01
你的疑问是“在第一次键盘录入的时候,为什么不能输入空呢?我想让下面的while语句第一次的时候line就是空, ...
我是想通过键盘输入来输入null,但是我试了试输入:null,或者直接敲回车,但是都没有读到空
我猜想,应该通过键盘录入无法录入空
但是在后边的视频当中,毕老师提到一句话,在键盘录入的时候,直接按ctrl+c键就是录入了空。
作者:
To
时间:
2013-10-27 16:15
楼主你好,如果问题已解决请将帖子状态修改为提问结束,
如果未解决请继续追问,谢谢合作
修改方法请看解释帖:
http://bbs.itheima.com/thread-89313-1-1.html
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2