简单记录下UDP/TCP基本连接代码,方便后面测试需要时直接使用
区别
简单说明下二者的区别
tcp面向连接,需要先建立连接,一对一传输数据,数据发送稳定,传输数据量也比udp大
udp不需要建立连接,为广播发送数据,数据发送不稳定,无法确保接收端成功收到数据
基本连接代码
udp基本连接代码
接收端
1.先建立udp的socket,明确那个端口(对应发送端设置的端口)
DatagramSocket ds = new DatagramSocket(10000);
2.定义数据包
byte[] bu = new byte[1024];
DatagramPacket dg = new DatagramPacket(bu,bu.length);
3.接收数据。先将数据存储到数据包中
ds.receive(dg);
4.通过数据包对象获取数据内容。包括ip、端口、发送的内容
String ip = dg.getAddress().getHostAddress();
int port = dg.getPort();
String text = new String(dg.getData(),0,dg.getLength());
System.out.println("内容:"+text+";ip:"+ip+";端口:"+port);
5.关闭流
ds.close();
发送端
1.先建立udp的socket
DatagramSocket ds = new DatagramSocket();
2.将数据封装到数据包中,数据包对象是datagramPacket
byte[] buf = "upd发送成功!".getBytes();
DatagramPacket dg = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.2"),10000);
3.使用socket的send方法,将数据包发送出去
ds.send(dg);
4.关闭流
ds.close();
tcp基本连接代码
客户端
1.创建Socket对象,并连接服务端
Socket socket = new Socket("192.168.1.2",1211);
* 2.根据socket对象创建输出流对象,写入数据
OutputStream out = socket.getOutputStream();
out.write("Tcp数据发送成功!".getBytes());
* 3.关闭连接
socket.close();
服务端
1.创建ServiceSocket对象,设置需要监听的端口
ServerSocket ss = new ServerSocket(1211);
* 2.从ServerSocket对象中获取到客户端Socket对象
Socket socket = ss.accept();
* 3.根据客户端Socket对象创建对应的输入流对象
InputStream in = socket.getInputStream();
* 4.再把输入对象中的内容读取出来,放到byte数组中
byte[] bt = new byte[1024];
int len = in.read(bt);
String text = new String(bt,0,len);
5.关闭连接和流
socket.close();
in.close();