zoukankan      html  css  js  c++  java
  • Socket编程

    UDP知识点与案例:

    DatagramPacket dp = new DatagramPacket(buf, buf.length); 后面的字节数组用于接收发进来的数据报。

    DatagramPacket dp = new DatagramPacket(buf, buf.length,new InetSocketAddress("127.0.0.1", 5678));后面的inetsocketaddress是用户发送数据报的目标地址和端口号,以及发送的字节数组长度与字节数组。

    DatagramSocket ds = new DatagramSocket(5678);//创建一个数据报套接字并绑定到本地具体的端口上。

    Constructs a datagram socket and binds it to the specified port on the local host machine. The socket will be bound to the wildcardaddress, an IP address chosen by the kernel.

     1 import java.net.*;
     2 import java.io.*;
     3 
     4 public class TestUDPClient
     5 {
     6     public static void main(String args[]) throws Exception
     7     {
     8         long n = 100000L;
     9         ByteArrayOutputStream baos = new ByteArrayOutputStream();
    10         DataOutputStream dos = new DataOutputStream(baos);
    11         dos.writeLong(n);
    12         
    13         byte[] buf = baos.toByteArray();//转换为字节数组
    14 System.out.println(buf.length);
    15         DatagramPacket dp = new DatagramPacket(buf, buf.length,new InetSocketAddress("127.0.0.1", 5678));
    16         DatagramSocket ds = new DatagramSocket(9999);
    17         ds.send(dp);
    18         ds.close();
    19         
    20     }
    21 }
    import java.net.*;
    import java.io.*;
    
    public class TestUDPServer
    {
    	public static void main(String args[]) throws Exception
    	{
    		byte buf[] = new byte[1024];
    		DatagramPacket dp = new DatagramPacket(buf, buf.length);
    		DatagramSocket ds = new DatagramSocket(5678);
    		while(true)
    		{
    			ds.receive(dp);
    			ByteArrayInputStream bais = new ByteArrayInputStream(buf);
    			DataInputStream dis = new DataInputStream(bais);
    			System.out.println(dis.readLong());
    		}
    	}
    }
    

      TCP知识点与典型案例:

    1.客户端要创建Socket并且指定自己的ip地址和要绑定的端口号:Socket s1 = new Socket("127.0.0.1", 8888);

    2.服务端要穿件serversocket并且连接到哪个端口号:ServerSocket s = new ServerSocket(8888);

    3.服务器端的ServerSocket中的accept()方法用于接收客户端的连接请求,返回值为一个socket,常常用socket的getinputstream或getoutputstream方法获取流来进行交流。

     1 *    要  点:
     2  *        1. Java Socket编程步骤
     3  *        2. Socket/ServerSocket类用法
     4  *        3. 通过Socket对象可以获取通信对方Socket的信息
     5  */
     6 import java.net.*;
     7 import java.io.*;
     8 
     9 public class TestServer {
    10     public static void main(String args[]) {
    11         try {        
    12             ServerSocket s = new ServerSocket(8888);
    13             while (true) {
    14                 Socket s1 = s.accept();
    15                 OutputStream os = s1.getOutputStream();
    16                 DataOutputStream dos = new DataOutputStream(os);
    17                 dos.writeUTF("Hello," + s1.getInetAddress() + 
    18                         "port#" +s1.getPort() + "  bye-bye!");
    19                 dos.close();
    20                 s1.close();
    21             }
    22         }catch (IOException e) {
    23             e.printStackTrace();
    24             System.out.println("程序运行出错:" + e);            
    25         }
    26     }
    27 }
     1 /*    范例名称:简单的client/server程序
     2  *     源文件名称:TestClient.java/TestServer.java
     3  *    要  点:
     4  *        1. Java Socket编程步骤
     5  *        2. Socket/ServerSocket类用法
     6  *        3. 通过Socket对象可以获取通信对方Socket的信息
     7  */
     8 
     9 import java.net.*;
    10 import java.io.*;
    11 
    12 public class TestClient {
    13     public static void main(String args[]) {
    14         try {
    15             Socket s1 = new Socket("127.0.0.1", 8888);
    16             InputStream is = s1.getInputStream();
    17             DataInputStream dis = new DataInputStream(is);
    18             System.out.println(dis.readUTF());
    19             dis.close();
    20             s1.close();
    21         } catch (ConnectException connExc) {
    22             connExc.printStackTrace();
    23             System.err.println("服务器连接失败!");
    24         } catch (IOException e) {
    25             e.printStackTrace();
    26         }
    27     }
    28 }
  • 相关阅读:
    快速排序
    归并排序
    python module的结构
    HTTPResponse.read([amt]):只能read一次
    本地文件上传到远程服务器
    HTTP POST发消息
    64. 最小路径和-python
    322.零钱兑换-python
    把二叉树打印成多行 -python
    按之字形顺序打印二叉树 -python
  • 原文地址:https://www.cnblogs.com/imqsl/p/6098474.html
Copyright © 2011-2022 走看看