zoukankan      html  css  js  c++  java
  • JAVA的Socket

    Socket编程步骤


    基于TCP的Socket编程步骤:

      
    1)服务器程序编写:
        ①调用ServerSocket(int port)创建一个服务器端套接字,并绑定到指定端口上;
           ServerSocket server = new ServerSocket(port);
        ②调用accept(),监听连接请求,如果客户端请求连接,则接受连接,返回通信套接字;
           Socket  socket = server.accept(); 
        ③调用Socket类的getInputStream获取输入流,开始网络数据的接收;
           InputStream in = socket.getInputStream();
        ④最后关闭通信套接字。
           socket.close();


    2)客户端程序编写:
        ①调用Socket()创建一个流套接字,并连接到服务器端; 
          Socket socket = new Socket(ip, port);
        ②调用Socket类的getOutputStream()获取输出流,开始网络数据的发送;
          OutputStream out = socket.getOutputStream();  
        ③调用flush方法强制把缓存中的输出流输出(并清空缓存区),确保数据的发送;
          out.flush();
        ④最后关闭通信套接字
          socket.close();
    --------------------------------------------------------------------------------------------------
    服务器例子:


    package t;


    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.ServerSocket;
    import java.net.Socket;


    public class server {
      public static void main(String[] args) throws IOException {
    ServerSocket ss=new ServerSocket(8888);
    Socket s=ss.accept();
    InputStream is=s.getInputStream();
    InputStreamReader isr=new InputStreamReader(is);
    BufferedReader br=new BufferedReader(isr);
    String str;
    while((str=br.readLine())!=null) {
     System.out.println(str);
    }
    br.close();
    isr.close();
    is.close();
    s.close();
    ss.close();
      }
    }


    客户端例子:
    //127.0.0.1是回送IP地址,测试用,指自己的主机。


    package t;


    import java.io.IOException;
    import java.io.OutputStream;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.net.Socket;
    import java.net.UnknownHostException;


    public class user {
      public static void main(String[] args) throws UnknownHostException, IOException {
    Socket s=new Socket("127.0.0.1",8888);
    OutputStream os=s.getOutputStream();
    OutputStreamWriter osw=new OutputStreamWriter(os);
    PrintWriter pw=new PrintWriter(osw);
    pw.println("hang1");
    pw.println("hang2");
    pw.flush();
    pw.close();
    osw.close();
    os.close();
    s.close();
      }
    }


    先运行服务器例子,后运行客户端例子,然后在控制台输出:

    hang1   

    hang2



    --------------------------------------------------------------------------------------------------






     
    基于UDP的Socket编程步骤:


    1)接收端程序编写:
        ①调用DatagramSocket(int port)创建一个数据报套接字,并绑定到指定端口上;
        ②调用DatagramPacket(byte[] buf, int length),建立一个字节数组以接收UDP包 ;
        ③调用DatagramSocket类的receive(),接收UDP包;
        ④最后关闭数据报套接字。
    2)发送端程序编写:
        ①调用DatagramSocket()创建一个数据报套接字; 
        ②调用DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port),建立要发送的UDP包;
        ③调用DatagramSocket类的send(),发送UDP包;
        ④最后关闭数据报套接字。

  • 相关阅读:
    [Jweb] JSP-编程 06, 内置对象
    [Jweb] Tomcat 解决编码, 乱码问题
    [Jweb] JSP-编程 05 JSP 使用 javabean
    [Jweb] JSP-编程 04 转向 jsp:forward 与 sendRedirect
    [Jweb] JSP-编程 03 静态, 动态包含
    [Jweb] JSP-编程 02 (Directive-include)
    [Jweb] JSP-编程 01 (Directive-page)
    [Jweb] JSP 编程 00 -Declaration- Scriptlet-表达式-Directive (推出原因 : Servlet写标签非常麻烦!)
    [Jweb] 数据库处理以及在 Servlet 中使用 Bean
    [Jweb] Application / TestServletContext.java
  • 原文地址:https://www.cnblogs.com/codeToSuccess/p/13906268.html
Copyright © 2011-2022 走看看