心得11--网络编程2-QQ、飞秋等聊天室部分网络编程
2012-09-11 17:53
260 查看
聊天室前奏:先来些辅助工作,通过四个案例慢慢深入了解聊天室的内幕,下期与大家分享聊天室的编写
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();
}
}
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();
}
}
相关文章推荐
- 心得11--网络编程2-QQ、飞秋等聊天室部分网络编程
- 网络聊天工具Socket编程心得
- 网络聊天工具Socket编程心得
- 服务器端编程心得(六)—— 关于网络编程的一些实用技巧和细节
- 黑马程序员--Java基础--11网络编程
- Java基础知识强化之网络编程笔记05:UDP之多线程实现聊天室案例
- 心得16--网络编程7-Url-解密IE的神秘面纱
- linux进程全解-3.4.linux应用编程和网络编程第4部分
- Java网络编程 - 基于UDP协议 实现简单的聊天室程序
- java网络编程一:模拟qq聊天功能,实现一对一聊天
- [知了堂学习笔记]网络编程扩展_实现简单的聊天室功能
- 【网络编程】之七、select聊天室
- 11 - 网络编程之设备间通信原理
- VC编程常见错误及调试技巧(部分转自网络)
- 网络编程[11]
- 六星经典CSAPP-笔记(11)网络编程
- Android学习11Android上的网络编程
- Python3抓取页面信息,网络编程,简单发送QQ邮件
- java网络编程,通过TCP,Socket实现多对一的局域网聊天室
- 网络编程_多线程实现聊天室程序