最近学习了tcp和udp的黑马视频。虽然理解这两种方式的区别,但是写代码的时候经常记不住区别,所以这里手写区分一下。UDP:相应的UDP编程步骤就简单多了,如下: UDP编程服务器端一般步骤为: 1。创建套接字并使用函数socket(); 2。设置socket属性,使用函数setsockopt();*可选 3、将IP地址、端口等信息绑定到socket,使用函数bind(); 4、循环接收数据,使用函数recvfrom(); 5.关闭网络连接;代码实现:publicclassUdpReceiveTest{publicstaticvoidmain(String[]args)throwsIOException{DatagramSocketds=newDatagramSocket(10086);while(true){byte[]bys=newbyte[1024];DatagramPacketdp=newDatagramPacket(bys,bys.length);ds.receive(dp);StringdataString=newString(dp.getData(),0,dp.getLength());System.out.println(数据字符串);}}}UDP客户端编程一般步骤为: 1。创建套接字,使用函数socket(); 2。设置套接字属性,使用函数setsockopt();*可选 3.将IP地址、端口等信息绑定到socket,使用函数bind();*可选 4。设置对方的IP地址和端口等属性; 5.发送数据,使用函数sendto(); 6.关闭网络连接;publicclassSendDemo{publicstaticvoidmain(String[]args)throwsIOException{DatagramSocketds=newDatagramSocket();byte[]bys="Hello".getBytes();DatagramPacketdp=newDatagramPacket(bys,bys.length,InetAddress.getByName("192.168.101.9"),10086);ds.发送(dp);ds.close();}}TCP:服务器端TCP编程的一般步骤是: 1。要创建套接字,请使用函数socket(); 2。要设置套接字属性,请使用函数setsockopt();*可选 3。将IP地址、端口等信息绑定到socket,使用函数bind(); 4。要启用监控,请使用函数listen(); 5.要从客户端接收连接,请使用函数accept(); 6。要发送和接收数据,请使用函数send()和recv(),或者read()和write(); 7。关闭网络连接; 8、关闭监控;publicclassServerDemo{publicstaticvoidmain(String[]args)throwsIOException{//创建服务器端套接字对象(severSocket)ServerSocketss=newServerSocket(10086);//监听客户端连接,返回一个Socket对象Sockets=ss.accept();//获取输入流,读取数据,并在控制台显示数据InputStreamis=s.getInputStream();byte[]bytes=newbyte[1024];intlen=is.read(bytes);字符串数据=新字符串(字节,0,len);System.out.println("服务器:"+data);//给予反馈OutputStreamos=s.getOutputStream();操作系统。write("数据已接收".getBytes());//释放资源ss.close();}}TCP客户端编程的一般步骤是: 1。创建套接字并使用函数socket(); 2。要设置套接字属性,请使用函数setsockopt();*可选 3。将IP地址、端口等信息绑定到socket,使用函数bind();*可选 4。设置要连接的对方的IP地址、端口等属性; 5.要连接到服务器,请使用函数connect(); 6。发送和接收数据,使用函数send()和recv(),或者read()和write(); 7、关闭网络连接;publicclassClientDemo{publicstaticvoidmain(String[]args)throwsIOException{//创建一个Socket对象Sockets=newSocket("192.168.101.9",10086);//获取输出流,写入DataOutputStreamos=s.getOutputStream();os.write("你好,tcp,我来了".getBytes());//接受服务器反馈InputStreamis=s.getInputStream();字节[]字节=新字节[1024];intlen=is.read(bytes);字符串数据=新字符串(字节,0,len);System.out.println(数据);//释放资源s.close();}}CP与UDP区别总结:1.TCP是面向连接的(比如打电话需要先拨号建立连接);UDP是无连接的,即发送数据前不需要建立连接。2.TCP提供可靠的服务。也就是说,通过TCP连接传输的数据是无差错、不丢失、不重复、有序到达的;UDP尽最大努力进行传递,即不保证可靠传递。作为一系列非结构化字节流;UDP是一种没有拥塞控制的面向消息的UDP,因此网络拥塞不会降低源主机的发送速率(对实时应用很有用,如IP电话、实时视频会议等)4.每个TCP连接只能是点对点的;UDP支持一对一、一对多、多对一和多对多的交互通信5.TCP头开销为20字节;UDP头开销很小,只有8个字节6.TCP的逻辑通信通道是全双工可靠通道,而UDP是不可靠通道
