socket编程入门

1TCP协议

[java]  view plain  copy
  1. import java.io.InputStream;  
  2. import java.io.OutputStream;  
  3. import java.net.Socket;  
  4.   
  5. /* 
  6.  * 1.Tcp协议客户端 
  7.     建立Socket链接服务端(指定ip地址,端口号)经过ip地址找对应的服务器 
  8.     调用Socket的getInputStream()和getOutputStream()方法获取和服务端相连的IO流 
  9.     输入流能够读取服务端输出流写出的数据 
  10.     输出流能够写出数据到服务端的输入流 
  11.  */  
  12. public class Client {  
  13.     public static void main(String[] args) throws Exception{  
  14.         //建立socket链接服务器  
  15.         Socket socket = new Socket("127.0.0.1"12345);  
  16.         //获取客户端输入流  
  17.         InputStream in = socket.getInputStream();  
  18.         //获取客户端输出流  
  19.         OutputStream out = socket.getOutputStream();  
  20.         //读取服务器发过来的数据  
  21.         byte[] arr = new byte[1024];  
  22.         int len = in.read(arr);  
  23.         //将数据转换成字符串  
  24.         System.out.println(new String(arr,0,len));  
  25.         //客户端向服务端写数据  
  26.         out.write("服务器你好,我是客户端".getBytes());  
  27.         socket.close();  
  28.     }  
  29. }  
[java]  view plain  copy
  1. import java.net.DatagramPacket;  
  2. import java.net.DatagramSocket;  
  3.   
  4. /* 
  5.  * UDP协议接收端 
  6.  * 接收Receive 
  7.     建立DatagramSocket, 指定端口号 
  8.     建立DatagramPacket, 指定数组, 长度 
  9.     使用DatagramSocket接收DatagramPacket 
  10.     关闭DatagramSocket 
  11.     从DatagramPacket中获取数据 
  12.  */  
  13. public class Receive {  
  14.     public static void main(String[] args) throws Exception {  
  15.         // 建立码头  
  16.         DatagramSocket socket = new DatagramSocket(6666);  
  17.         // 建立接收数据集装箱  
  18.         DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);  
  19.         //接收数据放到集装箱  
  20.         socket.receive(packet);  
  21.         //接收数据  
  22.         byte[] arr = packet.getData();  
  23.         int len = packet.getLength();  
  24.         System.out.println(new String(arr,0,len));  
  25.         //关闭socket  
  26.         socket.close();   
  27.     }  
  28. }  

2UDP协议

[java]  view plain  copy
  1. import java.net.DatagramPacket;  
  2. import java.net.DatagramSocket;  
  3. import java.net.InetAddress;  
  4.   
  5. /* 
  6.  * UDP协议发送端 
  7.  * 发送Send 
  8.         建立DatagramSocket, 随机端口号 
  9.         建立DatagramPacket, 指定数据, 长度, 地址, 端口 
  10.         使用DatagramSocket发送DatagramPacket 
  11.         关闭DatagramSocket 
  12.  */  
  13. public class Send {  
  14.     public static void main(String[] args) throws Exception {  
  15.         String message ="what your name?";  
  16.         //建立码头  
  17.         DatagramSocket socket = new DatagramSocket();  
  18.         //建立集装箱  
  19.         DatagramPacket packet =   
  20.                 new DatagramPacket(message.getBytes(), message.getBytes().length, InetAddress.getByName("127.0.0.1"), 6666);  
  21.         socket.send(packet);  
  22.         socket.close();  
  23.     }  
  24. }  

[java]  view plain  copy
  1. /* 
  2.  * TCP协议服务端 
  3.     建立ServerSocket(须要指定端口号) 
  4.     调用ServerSocket的accept()方法接收一个客户端请求,获得一个Socket 
  5.     调用Socket的getInputStream()和getOutputStream()方法获取和客户端相连的IO流 
  6.     输入流能够读取客户端输出流写出的数据 
  7.     输出流能够写出数据到客户端的输入流 
  8.  */  
  9. public class Server {  
  10.     public static void main(String[] args) throws Exception {  
  11.         ServerSocket server = new ServerSocket(12345);  
  12.         // 接收客户端的请求  
  13.         Socket socket = server.accept();  
  14.         // 获取服务器输入流  
  15.         InputStream in = socket.getInputStream();  
  16.         // 获取服务器输出流  
  17.         OutputStream out = socket.getOutputStream();  
  18.         // 服务器向客户端写出数据  
  19.         out.write("百度一下,你就知道".getBytes());  
  20.         // 读取客户端发过来的数据  
  21.         byte[] arr = new byte[1024];  
  22.         int len = in.read(arr);  
  23.         // 将数据转换成字符串  
  24.         System.out.println(new String(arr, 0, len));  
  25.         socket.close();  
  26.     }  
  27. }  

3总结

  1 Socket套接字概述:java

      网络上具备惟一标识的IP地址和端口号组合在一块儿才能构成惟一能识别的标识符套接字。数组

      通讯的两端都有Socket。至关于一个港口,用于发送和接收数据的服务器

      网络通讯其实就是Socket间的通讯。网络

      数据在两个Socket间经过IO流传输。socket

      Socket在应用程序中建立,经过一种绑定机制与驱动程序创建关系,告诉本身所对应的IP和port。tcp

  2服务器与客户端的概念ide

      第一次主动方就是客户端,被动方就是服务器,这些名词,只是一种喻意辞也有可能大家实际上都是客户端url

   3两种协议的实际案例spa

      网络直播就是采用的UDP协议, 信号很差 视频卡了,可是仍是一直发送数据,信号恢复了,就直接是信号恢复后的数据了,信号很差那个时间段的数据已经消失了.net

      游戏通常不采起tcp协议的,由于他没有必须保证数据的完整服务器收到了,就让你移动,服务器没受到,就不让你移动

相关文章
相关标签/搜索