zoukankan      html  css  js  c++  java
  • 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数据,服务器端接收并打印输出

  • 相关阅读:
    Python_Tips[3] -> sort/sorted 排序函数
    Python_Tips[2] -> 函数延后估值及字节码分析
    Python_Tips[1] -> 利用 Python 的字典实现 Switch 功能
    Python_Tips[0] -> 关于 import
    Python与数据库[2] -> 关系对象映射/ORM[4] -> sqlalchemy 的显式 ORM 访问方式
    Python与数据库[2] -> 关系对象映射/ORM[3] -> sqlalchemy 的声明层 ORM 访问方式
    Python与数据库[2] -> 关系对象映射/ORM[2] -> 建立声明层表对象的两种方式
    JS实现网页选取截屏 保存+打印 功能(转)
    nodejs+koa2 实现一个get请求
    windwos下安装使用nginx(转)
  • 原文地址:https://www.cnblogs.com/king1302217/p/2664860.html
Copyright © 2011-2022 走看看