读书人

经验11-网络编程2-QQ、飞秋等聊天室部

发布时间: 2012-09-22 21:54:54 作者: rapoo

心得11--网络编程2-QQ、飞秋等聊天室部分网络编程

聊天室前奏:先来些辅助工作,通过四个案例慢慢深入了解聊天室的内幕,下期与大家分享聊天室的编写

1.案例一:发送端

packagecom.packet;

importjava.net.DatagramPacket;

importjava.net.DatagramSocket;

importjava.net.InetAddress;

publicclass SendDemo {

public static void main(String[] args) throwsException {

//建立UPDSocket

DatagramSocket ds = new DatagramSocket();

//建立数据包

byte[] buf = "I am a guy!!".getBytes();

DatagramPacket dp = newDatagramPacket(buf,buf.length,InetAddress.getByName("192.168.49.255"),9009);

//发送

ds.send(dp);

//关闭

ds.close();

}

}

2. 案例二:接收端

packagecom.packet;

importjava.net.DatagramPacket;

importjava.net.DatagramSocket;

publicclass ReceiveDemo {

public static void main(String[] args) throwsException {

//建立UPDSocket

DatagramSocket ds = newDatagramSocket(9009);

//建立数据包

byte[] buf = new byte[1024];

DatagramPacket dp = newDatagramPacket(buf,buf.length);

//接收

ds.receive(dp);

//通过数据包对象的方法接收数据

String ip =dp.getAddress().getHostAddress();

String date = newString(dp.getData(),0,dp.getLength());

int port = dp.getPort(); //获取端口

System.out.println(ip+":"+date+":"+port);

//关闭

ds.close();

}

}

3. 可以键盘录入的发送端

packagecom.packet;

importjava.io.BufferedReader;

importjava.io.InputStreamReader;

importjava.net.DatagramPacket;

importjava.net.DatagramSocket;

importjava.net.InetAddress;

publicclass SendDemo1 {

public static void main(String[] args) throwsException {

//建立UPDSocket

DatagramSocket ds = new DatagramSocket();

//建立数据包

BufferedReader br = new BufferedReader(newInputStreamReader(System.in));

String line = null;

while((line=br.readLine())!=null){

byte[] buf = line.getBytes();

DatagramPacket dp = newDatagramPacket(buf,buf.length,InetAddress.getByName("192.168.49.255"),9009);

//发送

if(line.equals("886")){

ds.send(dp);break;

}

ds.send(dp);

}

//关闭

ds.close();

}

}

4.可以无限接收的接收端

packagecom.packet;

importjava.net.DatagramPacket;

importjava.net.DatagramSocket;

publicclass ReceiveDemo1 {

/**

* 无限接收消息,当接收的是886时退出程序

* 接收端口;与前例不同这里没有IP的输出而是换成特定字符串;

* @throwsIOException

*/

public static void main(String[] args) throwsException {

//建立UPDSocket

DatagramSocket ds = newDatagramSocket(9009);

//建立数据包

while(true){

byte[] buf = new byte[1024];

DatagramPacket dp = newDatagramPacket(buf,buf.length);

//发送

ds.receive(dp);

String ip =dp.getAddress().getHostAddress();

String date = newString(dp.getData(),0,dp.getLength());

int port = dp.getPort(); //获取端口

if(date.equals("886")){

System.out.println(ip+":"+date+":"+port);break;

}

System.out.println(ip+":"+date+":"+port);

}

//关闭

ds.close();

}

}

读书人网 >编程

热点推荐