黑马程序员_温习 网络编辑二 (个人笔记)概要(UDP传输演示)

---------------------- <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>、期待与您交流! ----------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值