客户端与服务器的连接--java网络编程第一课

TCP 协议 的 C/S程序

需要使用到两个类,来编写TCP协议的 CS程序 .
1.ServerSocket 搭建服务器
2.Socket 搭建客户端
两方使用socket(套接字 , 通信端点) 进行交流

ServerSocket

用于创建服务器 ,创建完毕后,,会绑定一个端口号。
然后此服务器可以等待客户端连接 ,每连接一个客户端 , 服务器就会得到一个新的Socket对象, 用于跟客户端进行通信 .。

常用构造方法:

ServerSocket(int port);创建一个基于TCP/IP协议的服务器 , 并绑定指定的端口号.
注意: 参数port的范围是: 0-65535 (建议1025-65535)

常用方法:

Socket accept();等待客户端连接 ,此方法会导致线程的阻塞,直到一个新的客户端连接成功, return Socket对象后, 线程在继续执行.
void close(); 释放占用的端口号 , 关闭服务器.

Socket

是两台计算机之间通信的端点 , 是网络驱动提供给应用程序编程的一种接口 一套标准, 一种机制 .

构造方法:

Socket(String ip,int port)
创建一个套接字, 并连接指定ip和端口号的 服务器.
参数1. 服务器的ip地址
参数2. 服务器软件的端口号…

常用方法:

- OutputStream getOutputStream();返回的是 , 指向通信的另一端点的输出流
- InputStream getInputStream();返回的是 , 指向通信的另一端点的输入流
- void close();关闭套接字
注意:
在网络编程时, 获取输入输出流的操作 ,对于客户端与服务器来说是相对的
客户端的输入流, 输入的是服务器的输出流输出的内容.
客户端的输出流, 输出到了服务器的输入流中.
所以在使用时,需要注意以下一点规则:户端与服务器获取流的顺序必须是相反的:
例如:客户端先得到了输入流 , 那服务器必须先获取输出流

package com.test;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerDemo {
    
    
    public static void main(String[] args) throws IOException {
    
    
        //搭建服务器
        ServerSocket server = new ServerSocket(55565);
        System.out.println("服务器建立完毕,等待连接!");
        //等待客户端连接
        Socket socket =  server.accept();
        OutputStream os = socket.getOutputStream();
        PrintStream ps = new PrintStream(os);
        ps.println("欢迎连接服务器!");

        InputStream is = socket.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String text = br.readLine();
        System.out.println("收到了客户端的消息:"+text);


        System.out.println("服务器连接完毕!");

    }
}
服务器建立完毕,等待连接!
收到了客户端的消息:你好,服务器
服务器连接完毕!
package com.test;

import java.io.*;
import java.net.Socket;

public class ClientDemo {
    
    
    public static void main(String[] args) throws IOException {
    
    
        Socket socket = new Socket("127.0.0.1",55565);
        InputStream is = socket.getInputStream();
        BufferedReader br = new BufferedReader(new InputStreamReader(is));
        String text = br.readLine();
        System.out.println("收到消息:"+text);

        OutputStream os = socket.getOutputStream();
        PrintStream ps = new PrintStream(os);
        ps.println("你好,服务器");
    }
}
收到消息:欢迎连接服务器!

猜你喜欢

转载自blog.csdn.net/qq_38960155/article/details/108889306