黑马程序员——Java网络编程

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

Java网络编程

在网络传输中通常使用两种传输协议:UDP和TCP,这两种传输方式各有特点,在不同的情况下选择相应的传输技术。

 

UDP协议

UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议。

特点:

1.      将数据、源地址、目的地址封装到数据包中,传输不需要建立链接。

2.      每个数据包大小在64k以内。

3.      因为面向无链接,因此是不可靠的协议。

4.      传输速度快。

 

Java语言的简单实现

发送端创建步骤:

1.      建立UDP的Socket服务。

2.      将数据封装到数据包。

3.      通过UDP的Socket服务将数据发送出去。

4.      关闭Socket服务。

代码如下:

DatagramSocket ds = new DatagramSocket(5000);
byte[] buf = "Hello World!".getBytes();
DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("127.0.0.1"), 10000);
ds.send(dp);
ds.close();

接收端创建步骤:

1.      定义一个udpsocket服务。

2.      定义一个数据包。

3.      通过socket服务的receive方法将接收到的数据存入以定义好的数据包中。

4.      通过数据包对象的特有方法,将这些不同的数据取出,打印在控制台上。

5.      关闭资源。

代码如下:

DatagramSocket ds = new DatagramSocket(10000);
while(true)
{
	byte[] buf = new byte[1024];
	DatagramPacket dp = new DatagramPacket(buf, buf.length);
	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();

TCP协议

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、基于IP的传输层协议。

特点:

1.      建立链接,形成传输数据的通道。

2.      可以进行大量数据的传输。

3.      通过三次握手建立链接,是可靠的传输协议。

4.      传输速度较慢。

 

Java语言的简单实现

发送端创建过程:

1.      创建客户端的Socket服务,制定目的主机和端口。

2.      获取Socket流中的输出流。

3.      使用输入流将数据写出。

4.      关闭资源。

 

代码如下:

Socket s = new Socket("127.0.0.1", 10000);
OutputStream out = s.getOutputStream();
out.write("Hello World!".getBytes());
s.close();

接收端创建步骤:

1.      建立服务端的Socket服务,ServerSocket(),并监听一个端口。

2.      获取连接过来的客户端对象。

3.      客户端如果发过来数据,那么服务端要使用对应的客户端对象, 并获取到该客户端对象的读取流来读取发过来的数据,并打印在控制台上。

4.      关闭服务器。

 

代码如下:
ServerSocket ss = new ServerSocket(10000);
Socket s = ss.accept();
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+".........connnected");
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
System.out.println(new String(buf, 0, len));
s.close();
ss.close();





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值