java 网络编程(四)----UDP进阶篇聊天小程序
2016-02-01 11:45
417 查看
设计要求:单线程模式,客户端只发送数据,数据的来源为键盘录入,服务器端只接收数据,当客户端发送886的时候,客户端和服务器端都退出。
1. 发送端:
public class Send implements Runnable{private DatagramSocket ds;public Send(DatagramSocket ds)
{
this.ds= ds;
}
@Override
try {
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
String lines = null;
while((lines=bufr.readLine())!=null)
{
byte[] buf=lines.getBytes();
DatagramPacket dp= new DatagramPacket(buf, buf.length,InetAddress.getByName("192.168.5.255"),10001);
ds.send(dp);
if("886".equals(lines))
break;
}
ds.close();
} catch (Exception e) {
}
}}
2. 接收端:
public class Reci implements Runnable {
private DatagramSocket ds;
public Reci(DatagramSocket ds)
{
this.ds= ds;
}
@Override
public void run() {
// TODO Auto-generated method stub
try {
while(true){
byte[] buf=new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
ds.receive(dp);
String ipString=dp.getAddress().getHostAddress();
int port =dp.getPort();
String data= new String(dp.getData(),0,dp.getLength());
System.out.println("ip :"+ipString+"port :"+port+"data :"+data);
if(data.equals("886"))
{
System.out.println(ipString+"...退出聊天室");
}
}
} catch (IOException e) {
}
}
}
3. 单线程进程启动
public class ChatMultiThreadDemo {
public static void main(String[] args) throws SocketException {
DatagramSocket send = new DatagramSocket();
DatagramSocket reci = new DatagramSocket(10001);
new Thread(new Send(send)).start();
new Thread(new Reci(reci)).start();
}
}
1. 发送端:
public class Send implements Runnable{private DatagramSocket ds;public Send(DatagramSocket ds)
{
this.ds= ds;
}
@Override
try {
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
String lines = null;
while((lines=bufr.readLine())!=null)
{
byte[] buf=lines.getBytes();
DatagramPacket dp= new DatagramPacket(buf, buf.length,InetAddress.getByName("192.168.5.255"),10001);
ds.send(dp);
if("886".equals(lines))
break;
}
ds.close();
} catch (Exception e) {
}
}}
2. 接收端:
public class Reci implements Runnable {
private DatagramSocket ds;
public Reci(DatagramSocket ds)
{
this.ds= ds;
}
@Override
public void run() {
// TODO Auto-generated method stub
try {
while(true){
byte[] buf=new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
ds.receive(dp);
String ipString=dp.getAddress().getHostAddress();
int port =dp.getPort();
String data= new String(dp.getData(),0,dp.getLength());
System.out.println("ip :"+ipString+"port :"+port+"data :"+data);
if(data.equals("886"))
{
System.out.println(ipString+"...退出聊天室");
}
}
} catch (IOException e) {
}
}
}
3. 单线程进程启动
public class ChatMultiThreadDemo {
public static void main(String[] args) throws SocketException {
DatagramSocket send = new DatagramSocket();
DatagramSocket reci = new DatagramSocket(10001);
new Thread(new Send(send)).start();
new Thread(new Reci(reci)).start();
}
}
相关文章推荐
- android studio编译android M时无法使用org.apache.http.**的解决方法
- dell 网络产品线
- 【性能诊断】StackOverflow引发的“网络”及系统稳定性问题
- php----http协议 Cookie
- 2016太原网络营销师谈一谈他对百度竞价的理解?
- android开发获取网络状态,wifi,wap,2g,3g.工具类(一)
- android开发网络连接工具类(一)
- 【infoQ】物联网项目的网络注意事项
- 利用CoreTelephony获取用户当前网络状态(判断2G,3G,4G)
- openstack(liberty):部署实验平台(一,基础网络环境搭建)
- java 网络编程(三)---TCP的基础级示例
- HTTPS 原理解析(转)
- TCP初始化序列号ISN
- java 网络编程(二)----UDP基础级的示例
- 网络模拟器WANem使用配置图文教程
- 两种请求方式URLHttpconnection 和Httpclient提交表单 网络篇(二)
- 原生 NSURL 网络请求 GET POST
- 深入分析JavaWeb 4 -- Http协议
- 想成为网络安全技术爱好者(可能是黑客)的话,需要看什么书?
- Linux极客命令(网络篇)