• java socket通讯(一) 入门示例


    一、入门

           要想学习socket通讯,首先得知道tcp/ip和udp连接,具体可参考浅谈TCP/IP 和 UDP的区别

    二、示例

           首先新建了一个java工程,包括两个部分,客户端SocketClient类和服务器端SocketServer类,服务器端SocketServer监听3756端口,客户端SocketClient往服务器端的3756端口发送一些文本信息,服务器端SocketServer接受完客户端的信息后,将客户端的信息打印出来。

    服务器端SocketServer:

    package GPS;
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.io.BufferedWriter;
    import java.io.OutputStreamWriter;
    
    import java.net.ServerSocket;
    import java.net.Socket;
    
    
    public class SocketServer {
        public static void main(String [] args){
            ServerSocket ss = null;
            BufferedReader br = null;
            Socket sk = null;
            try{
                System.out.println("create server socket....");
                ss = new ServerSocket(3756);
                System.out.println("wait for a connection....");
                while(true)     //服务器端一直监听这个端口,等待客户端的连接
                {
                  sk = ss.accept();                 
                  System.out.println("get a socket object...");
                  br = new BufferedReader(new InputStreamReader(sk.getInputStream()));
                  String line = null;
                  while((line = br.readLine()) != null){
                      System.out.println(line);     //服务器端打印客户端发送的信息数据
                  }
              }
            }
            catch(Exception ex){
                System.out.println(ex.getMessage());
            }
            finally{
              try{
                  if(br != null){
                      br.close();
                  }
                  if(ss != null){
                      ss.close();
                  }
                  if(sk != null){
                      sk.close();
                  }
              }
              catch(Exception ex){
                  System.out.println(ex.getMessage());
              }
            }
          }
    
    }

    客户端SocketClient:

    package GPS;
    import java.io.BufferedInputStream;
    import java.io.BufferedWriter;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class SocketClient {
        public static void main(String [] args){
              Socket sk = null;
              PrintWriter pw = null;
              try{
                  sk = new Socket("localhost",3756);
                  pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(sk.getOutputStream())));
                  while(true)
                  {
                     Thread.sleep(3000);
                     pw.println("I come from client");    //客户端往服务器端发送数据
                     pw.flush();
                  }
              }
              catch(Exception ex){
                  System.out.println(ex.getMessage());
              }
              finally{
                try{
                  if(sk != null){
                      sk.close();
                  }
                  if(pw != null){
                      pw.close();
                  }
                }
                catch(Exception ex){
                    System.out.println(ex.getMessage());
                }
              }
          }
    
    }

     三、运行

    首先启动服务器端SocketServer,然后运行客户端类SocketClient,服务端每隔3秒就会收到客户端发送来的信息:I come from client

    create server socket....

    wait for a connection....

    get a socket object...

    I come from client

        这样就完成了一次socket连接请求,原理很简单,服务器端监听某一个端口,客户端向服务器端的指定端口请求连接,连接成功后,发送socket数据,服务器端接收并打印输出

  • 相关阅读:
    js截取字符串区分汉字字母代码
    List 去处自定义重复对象方法
    63. Unique Paths II
    62. Unique Paths
    388. Longest Absolute File Path
    41. First Missing Positive
    140. Word Break II
    139. Word Break
    239. Sliding Window Maximum
    5. Longest Palindromic Substring
  • 原文地址:https://www.cnblogs.com/king1302217/p/2664860.html
Copyright © 2020-2023  润新知