UDP利用多线程实现数据的发送和接收
2015-08-11 14:41
696 查看
package broadview;
import java.io.*;
import java.net.*;
public class QQ_UDP {
/**
* @throws Exception
* @利用多线程实现数据的发送和接收
*/
public static void main(String[] args) throws Exception {
DatagramSocket sendSocket = new DatagramSocket();
DatagramSocket receSocket = new DatagramSocket(10002);
new Thread(new Send(sendSocket)).start();
new Thread(new Rece(receSocket)).start();
}
}
class Send implements Runnable{
private DatagramSocket ds;
public Send(DatagramSocket ds){
this.ds = ds;
}
public void run() {
try{
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while((line=buf.readLine())!=null){
if("886".endsWith(line))
break;
byte[] b = line.getBytes();
DatagramPacket dp =
new DatagramPacket(b,b.length,InetAddress.getByName("115.156.155.255"),10002);
ds.send(dp);
}
}catch(Exception e){
throw 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){
throw new RuntimeException("接收失败");
}
}
}
import java.io.*;
import java.net.*;
public class QQ_UDP {
/**
* @throws Exception
* @利用多线程实现数据的发送和接收
*/
public static void main(String[] args) throws Exception {
DatagramSocket sendSocket = new DatagramSocket();
DatagramSocket receSocket = new DatagramSocket(10002);
new Thread(new Send(sendSocket)).start();
new Thread(new Rece(receSocket)).start();
}
}
class Send implements Runnable{
private DatagramSocket ds;
public Send(DatagramSocket ds){
this.ds = ds;
}
public void run() {
try{
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while((line=buf.readLine())!=null){
if("886".endsWith(line))
break;
byte[] b = line.getBytes();
DatagramPacket dp =
new DatagramPacket(b,b.length,InetAddress.getByName("115.156.155.255"),10002);
ds.send(dp);
}
}catch(Exception e){
throw 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){
throw new RuntimeException("接收失败");
}
}
}
相关文章推荐
- Android Universal Image Loader 源码分析(三)
- 算法题(JAVA实现)——网易校招2015
- 黑马程序员——C语言笔记之数据类型与常量
- Message Flood
- 关于Android Studio 和 Gradle的那些事儿
- iOS入门(十)指针
- POJ 3669 Meteor Shower
- MDK __main过程分析
- VS2010调用apache APR 编译的静态库
- rgba()和opacity的使用
- xml文件转换
- af_erp
- 物理内存布局
- 名称中不能包含“=”字符(十六进制值 0x3D)。 行 1,XXXXXX
- 字串串拼接 string+
- myeclipse安装svn插件的多种方式
- Web编程 > HTML/WML/CSS兼容/XML > 如何强制360浏览器以极速模式打开页面
- C++中的抽象数据类型
- JS学习30:对象简单、深度克隆(复制、Clone)
- 12本互联网科技大佬推荐的必读书籍