黑马程序员_温习 网络编辑二 (个人笔记)概要(UDP传输演示)
2013-12-16 22:38
666 查看
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
概要(UDP传输演示)
UDP发送端:
例:
DatagramSocket ds = new DatagramSocket(8888);//建立UDP。Socket服务端,并指定监听端口8888(不写则系统随机)
byte[] buf = "udp ge men lai le".getBytes(); //将要发的内容记录在容器中
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.254"),10000); //建立一个包
//吧数据封装进去,括号为
|--数据
|--长度
|--指定主机
|--指定端口
ds.send(dp);//发送(通过ds服务端将dp包发送到指定主机的指定端口程序上)
ds.close();//关闭资源(占用网络资源)
UDP接收端:
DatagramSocket ds = new DatagramSocket(10000);//加你服务端,监听10000端口
byte[] buf = new byte[1024]; //建一个容器最大1024即64K
DatagramPacket dp = new DatagramPacket(but,but.length);//建包并指定容器,和要接收的长度(这个是阻塞式方法。cmd会等待)
ds.receive(dp); // 通过服务端,将数据接收到包中
String ip=dp.getAddress().getHostAddress();// 获取包中的地址
String data=new String(dp.getData(),0,dp.getLength()); //获取数据
int port = dp.getPort()//获取端口号
ds.close();//关闭
练习:UDK聊天(和QQ聊天一样,边写边收,且在一个窗口中完成)
概要:一要用多线程
二建两个模板类,一个接收,一个发送,两个都实现多线程Runnable
import java.io.*;
import java.net.*;
class send implements Runnable //建立一个发送模板,实现多线程
{
private DatagramSocket ds;
public send(DatagramSocket ds){
this.ds = ds;
}
public void run(){
try
{
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));//键盘录入
String line = null;
while ((line = bufr.readLine())!=null)
{
if("886".equals(line))
break;
byte[] buf = line.getBytes(); //将录入内容 记录在容器中
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.255"),10002);//建立包,指定.容器,长度,主机,端口
//频段255为广播,即所有连接都会收到信息
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
{
byte[] buf = new byte[1024]; //建一个1024数组即64K
DatagramPacket dp = new DatagramPacket(buf,buf.length);//建包,指定 容器,和长度
ds.receive(dp); //将接收的数据,传入包中
String ip = dp.getAddress().getHostAddress(); //获取包中IP
String data = new String(dp.getData(),0,dp.getLength()); //获取包中数据。且指定长度
System.out.println(ip+"--"+data); //打印到控制台
}
catch (Exception e)
{
throw new RuntimeException("接收端失败");
}
}
}
class Demo
{
public static void main(String[] args)throws Exception
{
DatagramSocket sendsocket = new DatagramSocket(); //建立发送服务端
DatagramSocket recesocket = new DatagramSocket(10002); //建立接收服务端,指定本机监听端口100002
new Thread(new send(sendsocket)).start(); //建立多线程,传入发送模板对象,再将发送端对象出入模板对象中
new Thread(new Rece(recesocket)).start(); //建立多线程,传入接收模板对象,再将接收端对象出入模板对象中
}
}
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
概要(UDP传输演示)
UDP发送端:
例:
DatagramSocket ds = new DatagramSocket(8888);//建立UDP。Socket服务端,并指定监听端口8888(不写则系统随机)
byte[] buf = "udp ge men lai le".getBytes(); //将要发的内容记录在容器中
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.254"),10000); //建立一个包
//吧数据封装进去,括号为
|--数据
|--长度
|--指定主机
|--指定端口
ds.send(dp);//发送(通过ds服务端将dp包发送到指定主机的指定端口程序上)
ds.close();//关闭资源(占用网络资源)
UDP接收端:
DatagramSocket ds = new DatagramSocket(10000);//加你服务端,监听10000端口
byte[] buf = new byte[1024]; //建一个容器最大1024即64K
DatagramPacket dp = new DatagramPacket(but,but.length);//建包并指定容器,和要接收的长度(这个是阻塞式方法。cmd会等待)
ds.receive(dp); // 通过服务端,将数据接收到包中
String ip=dp.getAddress().getHostAddress();// 获取包中的地址
String data=new String(dp.getData(),0,dp.getLength()); //获取数据
int port = dp.getPort()//获取端口号
ds.close();//关闭
练习:UDK聊天(和QQ聊天一样,边写边收,且在一个窗口中完成)
概要:一要用多线程
二建两个模板类,一个接收,一个发送,两个都实现多线程Runnable
import java.io.*;
import java.net.*;
class send implements Runnable //建立一个发送模板,实现多线程
{
private DatagramSocket ds;
public send(DatagramSocket ds){
this.ds = ds;
}
public void run(){
try
{
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));//键盘录入
String line = null;
while ((line = bufr.readLine())!=null)
{
if("886".equals(line))
break;
byte[] buf = line.getBytes(); //将录入内容 记录在容器中
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.255"),10002);//建立包,指定.容器,长度,主机,端口
//频段255为广播,即所有连接都会收到信息
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
{
byte[] buf = new byte[1024]; //建一个1024数组即64K
DatagramPacket dp = new DatagramPacket(buf,buf.length);//建包,指定 容器,和长度
ds.receive(dp); //将接收的数据,传入包中
String ip = dp.getAddress().getHostAddress(); //获取包中IP
String data = new String(dp.getData(),0,dp.getLength()); //获取包中数据。且指定长度
System.out.println(ip+"--"+data); //打印到控制台
}
catch (Exception e)
{
throw new RuntimeException("接收端失败");
}
}
}
class Demo
{
public static void main(String[] args)throws Exception
{
DatagramSocket sendsocket = new DatagramSocket(); //建立发送服务端
DatagramSocket recesocket = new DatagramSocket(10002); //建立接收服务端,指定本机监听端口100002
new Thread(new send(sendsocket)).start(); //建立多线程,传入发送模板对象,再将发送端对象出入模板对象中
new Thread(new Rece(recesocket)).start(); //建立多线程,传入接收模板对象,再将接收端对象出入模板对象中
}
}
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
相关文章推荐
- 黑马程序员_温习 网络编辑一 (个人笔记)摘要(网络概述---网络参考模型---网络传输要素---IP地址---端口----传输协议(UDP -- TCP)---Socket机制 )
- 黑马程序员_温习 网络编辑三 (个人笔记)摘要(TCP概述 ----TCP 演示)
- 黑马程序员_温习 网络编辑四 (个人笔记)摘要(浏览器客户端介绍----消息头---URL(统一资源定位符)(应用层)----域名解析)
- 黑马程序员——自学笔记15(网络传输2—UDP传输和TCP传输)
- 黑马程序员——java UDP传输演示
- 黑马程序员——java网络编程中的传输协议:UDP和TCP
- 黑马程序员_温习 集合四 (个人笔记)摘要(泛型)
- 黑马程序员_温习 集合五 (个人笔记)摘要(Map集合体系---Hashtable集合---HashMap集合----TreeMap集合)
- 黑马程序员-------Java笔记--------网络编程(UDP与TCP基本步骤)
- 黑马程序员---网络编程(简介、UDP传输)
- 黑马程序员---网络,tcp udp 笔记
- 黑马程序员_温习 GUI图形用户接口一 (个人笔记)摘要(GUI图形用户界面介绍-----布局管理器-----事件监听机制-----窗体事件---Action(执行事件)----鼠标事件----键
- 黑马程序员_温习 集合六 (个人笔记)摘要(Collections集合工具类-----Arrays数组工具类-----高级for----可变参数----静态导入)
- 黑马程序员_温习String类(个人笔记)
- 黑马程序员_网络编程UDP之学习笔记
- 黑马程序员_温习 GUI图形用户接口二 (个人笔记)摘要(综合应用---对话框----菜单----Jar包打开方法)
- 黑马程序员 Java网络传输UDP和TCP协议
- 黑马程序员_温习 IO流一 (个人笔记) 简要(IO介绍。。字符流。。字符流缓冲区..装饰设计模式)
- 黑马程序员_温习 银行业务调度系统 (个人笔记)
- 黑马程序员:网络编程之UDP传输