Java Socket

目录

套接字Socket

什么是服务器

什么是客户端

TCP/IP是干什么?

网络编程三要素

5、网络编程


套接字Socket

什么是服务器

对外提供服务的一套软件,放在网络上(IP地址)

什么是客户端

为了连接服务器的一个软件

TCP/IP是干什么?

打个比方:TCP协议就相当于中国邮政,用来做运输

IP协议就相当于邮政编码。用来唯一标记目的地

网络编程三要素

  1. 协议(TCP/IP)
  2. IP地址

  1. 局域网IP地址
  2. 公网IP地址(买的)
  3. 查看本机IP操作

在指令面板输入:ipconfig

      4.域名

      5.Java提供了一个类InerAddress方便我们对ip地址操作

方法:

static InetAddress getByName(String hast):确定主机名称的IP地址。主机名称可以是

机器名称,也可以是IP地址

String getHostName():获取此IP地址的主机名

String getHoStAddress():返回文本显示中的地址字符串

3.端口

端口号:用两个字节表示的整数,他的取值范围是0~65535

1. 公认端口:0~1023。被预先定义的服务通信占用,如:HTTP(80),FTP(21),Telnet(23)

2. 注册端口:1024~49151。分配给用户进程或应用程序。如:Tomcat(8080),MySQL(3306),Oracle(1521)。

3. 动态/ 私有端口:49152~65535。

5、网络编程

服务器端的编写流程(看不懂就直接背会)

 1、创建SeverSocket对象,并设置端口

     ServerSocket serverSocket=new ServerSocket(8888);

    2、调用accpet方法,监听要连接到此套接字,并接收他

     Socket socket=serverSocket.accept();

    3、接收客户端数据

     InputStream is=socket.getInputStream();

        byte[] b=new byte[1024];

        int len;

        StringBuilder s=new StringBuilder();

        while ((len=is.read(b))!=-1){

            s.append(new String(b,0,len));

        }

     4、返回客户段数据

      OutputStream os=socket.getOutputStream();

        os.write("哈哈哈".getBytes());

        os.flush();

      5、释放资源

       socket.close();

       serverSocket.close();

       

     

       

       //3、4、5写入线程来实现一个服务器接收多个客户端

        static class Client3 extends Thread{

        private Socket socket;

        public Client3(Socket socket){

            this.socket=socket;

        }

        @Override

        public void run() {

            try {

                //字符输入流  接收客户端信息

                BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));

                //字符输出流  向客户端返回信息

                PrintStream ps=new PrintStream(socket.getOutputStream());

                //接收客户端传入的内容

                String s;

                while ((s= br.readLine())!=null){

                    StringBuilder stringBuilder=new StringBuilder(s);

                    stringBuilder.reverse();//字符串反转

                    //传回到客户端

                    System.out.print("内容反转后:");

                    ps.println(stringBuilder);

                }

                System.out.println("正常退出");

            } catch (IOException e) {

                System.out.println("异常退出");

            }finally {

                try {

                    socket.close();

                } catch (IOException e) {

                    e.printStackTrace();

                }

            }

        }

    }

    

    

    //实现一个服务器连接多个客户端

        public static void main(String[] args) throws IOException {

        ServerSocket serverSocket=new ServerSocket(888);

        System.out.println("等待连接");

        int count=0;

        while (true){

            Socket socket=serverSocket.accept();

            count++;

  System.out.println("第"+cunt+"个客户端:"+socket.getInetAddress().socket.getHostAddress());

            Client3 client3=new Client3(socket);

            client3.start();

        }

}

客户端的编写流程(看不懂直接背会就好)

1、连接服务器

Socket socket=new Socket("IP",端口号);

2、向服务器传输数据

OutputStream os=socket.getOutputStream();

os.write();

3、接收服务器数据

InputStream is=socket.getInputStream();

byte[] b=new byte[1024];

        int len;

        StringBuilder s=new StringBuilder();

        while ((len=is.read(b))!=-1){

            s.append(new String(b,0,len));

        }

4、释放资源

socket.close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值