JAVA基础(三)网络编程简介

对于UDP和TCP两种网络传输方式,JAVA均进行了良好的封装,这里简单介绍一下:


一、UDP

1.1 客户端

UDP的传输通过使用DatagramSocke类的send函数进行DatagramPacket包的传输,具体流程如下:

DatagramSocket ds = new DatagramSocket();	//创建UDP的Socket
byte[] bys = "UDP传输文本".getBytes();  //创建输入信息
int length = bys.length;			//获取信息长度
InetAddress address = InetAddress.getByName("192.168.1.106");	//获取地址信息
int port = 12345;				//设置任意端口号
DatagramPacket dp = new DatagramPacket(bys, length,address,port);//创建dp包
ds.send(dp);					//进行包发送
ds.close();					//释放Socket链接资源

dp包的创建需要四个传入参数:字节数组、字节长度、地址、端口号,执行完send函数后,如果服务器端开启接收消息,则会进行显示

由于采用UDP方式传输,无论服务器是否启动,均能进行发送且不报错


1.2 服务器端

DatagramSocket ds = new DatagramSocket(12345);	//通过已知接口建立UDP链接Socket
byte[] bys = new byte[1024];					
DatagramPacket dp = new DatagramPacket(bys,bys.length);	//建立一个最简单的dp包
ds.receive(dp);						//ds进行dp包接收
System.out.println(dp.getAddress().getHostAddress() + ":" + new String(dp.getData(),0,dp.getLength()));
ds.close();

接收时的dp包不再需要录入地址和端口,端口在Socket进行定义,ip会在收到文件后一并获得


二、TCP

2.1 客户端

TCP的传输通过Socket导出输出字符流进行写入,写入的同时即进行传输

Socket s = new Socket("192.168.1.106",8888);	//创建发送地址IP及端口的Socket
OutputStream os = s.getOutputStream();		//创建Socket流
os.write("TCP传输".getBytes());			//直接写入记录,直接进行传输
s.close();					//释放资源

TCP的传输比UDP简单很多,在成功创建Socket的同时,JAVA虚拟机已经保证了链接的有效性,此时直接写入记录就能实现传输

同时,创建Socket的时候,服务器必须开启对应服务,监听端口,以保证建立有效地TCP连接

2.2 服务器端

要创建服务器,需要建立ServerSocket类,该类与发送Socket并不相同:

ServerSocket ss = new ServerSocket(8888);	//创建监听Socket
Socket s =ss.accept();				//阻塞获取端口数据,据此创建Socket流
InputStream is = s.getInputStream();		//Socket导出IS流
byte[] bys = new byte[1024];			//创建接收字节数组
int len = is.read(bys);				//从IS流中读取数据
System.out.println(s.getInetAddress().getHostAddress()+":"+new String(bys,0,len));	//打印数据
s.close();					//释放该条数据的资源
//ss.close(); 如果继续监听则不需要关闭监听Socket

与UDP类似,ServerSocket通过传入端口进行监控,不同的是:TCP使用acccpt函数,获取发送文件的Socket对象,并通过IS流进行数据导出,结束需要释放资源

而UDP只需要使用ds包获取数据


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值