黑马程序员技术交流社区
标题:
网络编程中的UDP 和 TCP协议
[打印本页]
作者:
菜鸟的求学路
时间:
2015-5-21 17:26
标题:
网络编程中的UDP 和 TCP协议
大家都知道,网络编程是重点,以后的开发中也会经常碰到.但对于像我这样的新人来说,它也是难点,因此总结了一下网络编程中最常用的两个协议,以及他的用法,还望斧正:
UDP 协议
发送方:
1.封装Socket:DatagramSocket;
DatagramSocket socket = new DatagramSocket();
2.准备要发送的数据,IP地址,端口号;
1).数据
byte[] byteArr = "你还好吗?".getBytes();
2).IP地址
InetAddress add = InetAddress.getByName("Lenovo-PC");
3).端口
int port = 8888;
3. 封装数据包:DatagramPacket
DatagramPacket packet = new DatagramPacket(byteArray,byteArray.length,add,port);
4.使用DatagramSocket的方法,将数据包发送出去;
socket.send(packet);
5.释放资源
socket.close();
接收方:
1.实例化一个DatagramSocket(端口号)
DatagramSocket socket = new DatagramSocket(8888);
2.实例化一个DatagramPacket,准备用来接收数据;
byte[] byteArray = new byte[1024];
DatagramPacket pak =new DatagramPacket(byteArray,byteArray.length);
3.等待数据:
System.out.println("接收方等待数据......");
socket.receive(pak);//程序在这里阻塞。一直等待信息,什么时候有信息到达, 什么时候返回
System.out.println("接收方接收到数据......");
4.一旦有连接了,receive()方法返回,将数据填充到packet;
从packet中解析数据;
String ip = pak.getAddress().getHostAddress();
int port = pak.getPort();
byte[] byteInfo = pak.getData();
System.out.println("byteInfo.length : "+ byteInfo.length);
System.out.println("IP : " + ip + " 端口:" + port + " 信息内容:" +
new String(byteInfo,0,pak.getLength()));
//释放资源;
socket.close();
TCP协议:
发送方:
//1.实例化一个Socket
//端口是接收端使用端口。意思是:发送给192.168.40.148机器的8888端口
Socket socket = new Socket("192.168.40.148",8888);
//因为要发送数据,所以获取一个"输出流"
OutputStream out = socket.getOutputStream();
//发送数据
out.write("你好,这是使用TCP发送的数据,请接收!!".getBytes());
//关闭流;
out.close();
socket.close();
接收方:
//1.实例化一个ServerSocket
ServerSocket server = new ServerSocket(8888);
//2.等待连接
System.out.println("接收方等待连接......");
Socket socket = server.accept();
System.out.println("获取到一个连接!");
//3.要读取数据,获取输入流
InputStream in = socket.getInputStream();
//4.读取数据
byte[] byteArray = new byte[1024];
int len = in.read(byteArray);//因为对方发一次,这里只读一次;
String str = new String(byteArray,0,len);
System.out.println("接收到信息:" + str);
//5.释放资源
server.close();
作者:
lingda21
时间:
2015-5-21 18:31
菜鸟路过,我也去总结下结合程序
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2