zoukankan      html  css  js  c++  java
  • 服务器端与客户端TCP连接入门(一)

    Java中使用Socket(即套接字)完成TCP程序的开发

    服务器端使用ServerSocket接收客户端的连接请求,每一个客户端都使用一个Socket对象表示

      在服务器端每次运行时都要使用accept()方法等待客户端连接,此方法执行后,服务端将进入阻塞状态,直到客户端连接之后,程序才可以向下继续执行。每一个Socket都表示一个客户端对象

      在客户端,程序可以通过Socket类的getInputStream()方法取得服务器的输出信息,在服务器端可以通过getOutputStream()方法取得客户端的输出信息

      在网络程序中,要使用输入及输出流的形式完成信息的传递。

    实例:

    1、服务器的程序,向客户端输出“Hello World”

    package Socket;
    
    import java.io.IOException;
    import java.io.PrintStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class HelloServer {
        public static void main(String[] args) throws Exception {
            ServerSocket server =null;
            Socket client=null;//一个socket对象表示一个客户端
            PrintStream out=null;//声明打印流对象,以向客户端输出
            server=new ServerSocket(8888);//此时服务器在8888端口等待客户端的访问
            
            System.out.println("服务器运行,等待客户端连接");
            client=server.accept();//程序阻塞,等待客户端连接才能继续往下走
            String str="Hello World";
            out=new PrintStream(client.getOutputStream());//实例化打印流对象,输出信息
            out.println(str);
            out.close();
            client.close();
            server.close();        
        }    
    }

    2、客户端的程序,接受服务器输出的内容

    package Socket;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.Socket;
    import java.net.UnknownHostException;
    
    public class HelloClient {
        public static void main(String[] args) throws Exception {
            Socket client=null;//声明Socket对象
            client=new Socket("localhost",8888);//指定连接的主机和端口
            BufferedReader buf=null;
            buf=new BufferedReader(new InputStreamReader(client.getInputStream()));//取得客户端的输入流
            
            String str=buf.readLine();
            System.out.println("服务器端输出内容:"+str);
            client.close();
            buf.close();
        }
    }

     服务端只有一个accept(),接收一次连接请求之后,就会关闭,实际应用中当然是循环接收请求

  • 相关阅读:
    SSH
    List Map Set
    oracle中的in和exsit比较
    Hibernate n+1问题
    单例模式。
    把一段逗号分割的字符串转换成一个数组
    Hibernate总结
    myeclipse安装svn插件的多种方式
    LeetCode 14 Longest Common Prefix
    LeetCode 13 Roman to Integer
  • 原文地址:https://www.cnblogs.com/Donnnnnn/p/6197292.html
Copyright © 2011-2022 走看看