---------------------- android培训、java培训、期待与您交流! ----------------------
小知识点总结:
1、 网络编程3要素:IP、端口、传输协议。
2、 各应用程序的端口号不能重复,端口号范围:0~65536;0~1024被系统保留(不建议使用)。
3、 127.0.0.1是本地回还地址;xx.xx.xx.255是该频段的广播地址(建立UDP协议 socket时,该频段的其它IP地址都可收到)。
UDP协议和TCP协议的区别:
UDP 1、面向无连接,不需要建立连接,速度快。
2、将数据封包后发送,每个数据包限制在64K之内
3、不可靠协议
TCP 1、通过三次握手完成连接
2、可进行大数据量传输
3、可靠协议
IP地址操作类:InetAddress
UDP协议类:DatagramSocket、DatagramPacket
TCP协议类:Socket、ServerSocket
以下是2个练习,运用udp的socket进行发送信息
import java.net.InetAddress;
import java.net.DatagramSocket;
import java.net.DatagramPacket;
class udpSend {
public static void main(String args[]) throws Exception{
//1、创建udp服务,通过DatagramSocket对象
DatagramSocket ds = new DatagramSocket();
//2、确定数据,封装成数据报。DatagramPacket(byte[] buf, int length, InetAddress address, int port)
byte bytes[] = "udp is using!".getBytes();
DatagramPacket dp = new DatagramPacket(bytes,bytes.length,InetAddress.getByName("10.20.52.15"),10000);
//3、通过socket服务,将已有的数据发送出去,通过send方法
ds.send(dp);
//4、关闭资源
ds.close();
}
}
class udpReceive {
public static void main(String args[]) throws Exception{
//1、创建udp socket,建立端点
DatagramSocket ds = new DatagramSocket(10000);
//2、定义数据包,用于存储数据
byte bytes[] = new byte[1024];
DatagramPacket dp = new DatagramPacket(bytes,bytes.length);
//通过socket服务的receive方法接收数据并存入数据包中
ds.receive(dp);
//通过数据包中的方法获得其中的数据
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
int port = dp.getPort();
System.out.println(ip+"::"+data+"::"+port);
//关闭资源
ds.close();
}
}
import java.io.*;
import java.net.*;
class Send implements Runnable{
private DatagramSocket ds;
public Send(DatagramSocket ds){
this.ds = ds;
}
public void run(){
try{
byte data[] = null;
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while((line = bufr.readLine())!= null){
if(line.equals("886"))
break;
data = line.getBytes();
DatagramPacket dp = new DatagramPacket(data,data.length,InetAddress.getByName("10.20.52.255"),10000);
ds.send(dp);
}
}catch(Exception e){
throw new RuntimeException("FALSE");
}
}
}
class Rece implements Runnable{
private DatagramSocket ds;
public Rece(DatagramSocket ds){
this.ds = ds;
}
public void run(){
try{
while(true){
byte[] bytes = new byte[1024];
DatagramPacket dp = new DatagramPacket(bytes,bytes.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("FALSE");
}
}
}
class ChatDemo{
public static void main(String args[]) throws Exception{
DatagramSocket sendSocket = new DatagramSocket();
DatagramSocket receSocket = new DatagramSocket(10000);
new Thread(new Send(sendSocket)).start();
new Thread(new Rece(receSocket)).start();
}
}
---------------------- android培训、java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima
分享到:
相关推荐
黑马程序员-SpringCloud-学习笔记-03-Eureka注册中心
黑马程序员-SpringCloud-学习笔记01-认识微服务
黑马程序员-SpringCloud-学习笔记-02-微服务拆分及远程调用
day01_Object类、常用API day02_Collection、泛型 day03_List、Set、数据结构、Collections day04_Map,斗地主案例 ...day11_网络编程 day12_函数式接口 day13_Stream流、方法引用 Java基础小节练习题答案
NULL 博文链接:https://840198532-qq-com.iteye.com/blog/1490903
NULL 博文链接:https://840198532-qq-com.iteye.com/blog/1490901
前端学习笔记-黑马程序员Vue
正在自学黑马程序员Java全套,目前只学了Javase,接下来是Javaweb,把自己整理的笔记分享一下。
B站黑马程序员Python教程学习笔记
针对所有初学安卓的人员的一个最全面的笔记. 省去了你自己去总结的时间,有更多的时间去敲代码. ------------黑马程序员学员-------------------
Javaweb基础全课程笔记,黑马程序员上课笔记,主要涉及前端 jsp和servlet等
前端学习笔记-黑马程序员
针对所有初学Linux的人员的一个最全面的笔记,对于有过基础的朋友来说又是一个更好的助手. 省去了你自己去总结的时间,有更多的时间去敲代码. ------------黑马程序员学员-------------------
Netty基础,用于学习Netty,参考黑马程序员的netty教程
黑马程序员WEB03-JS篇笔记.pdf
前端学习笔记-黑马程序员CSS
前端学习笔记-黑马程序员JS
vue学习笔记,B站黑马程序员的javaweb
b站黑马程序员java视频学习笔记