B/S网络编程

PC与PC之间的交流(B/S)

首先是Client端:

* TCP通信的客户端:向服务器发送连接请求给服务器发送数据,读取服务器回写的数据表示客户端的类
* java.net.Socket:此类实现客户端套接字(也可以就叫"套接字")。套接字是两台机器间通信的端点。
* 套接字:包含了IP地址和端口号的网络单位
*
* 构造方法
* Socket:string host,int port)创建一个流套接字并将其连接到指定主机上的指定端囗号
* 参数:
*       String host.:服务器主机名称/IP地址
*       int port :服务器端口号
*
* 成员方法
* Outputstream getoutputstream()返回此套接字的输出流。
* Inputstream getInputstream()返回此套接字的输入流
* void close()关闭此套接字。
*
* 实现步骤:
* 1.创建一个客户端对象Socket,构造方法绑定服务器的IP地址和端口号
* 2.使用Socket对象中的方法getOutputStream()获取网络字节输出流对象
* 3.使用网络字节输出流getOutputStream()对象中的方法write,给服务器发送数据
* 4.使用Socket对象中的方法getInputStream()获取网络字节输入流对象
* 5.使用网络字节输入流对对象中的方法read,读取服务器回写的数据
* 6.释放资源(Socket)

客户端的代码实现:

public class TCPClient {
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("127.0.0.1",8888);
        OutputStream os = socket.getOutputStream();
        os.write("你好服务器".getBytes());
        InputStream is = socket.getInputStream();
        byte[] bytes = new byte[1024];
        int len = is.read(bytes);
        System.out.println(new String(bytes,0,len));
        socket.close();
    }
}

然后是Server端:

* TCP通信的服务器端:接收客户端的请求,读取客户端发送的数据給客户端回写数据表示服务器的类:java.net.ServerSocket:此类实现服务器套接字。
* 构造方法
* Serversocket(int port)创建绑定到特定端口的服务器套接字
* 服务器端必须明确一件事情,必须的知道是哪个客户端请求
* 的服务器
* 所以可以使用 accept方法获取到请求的客户端对象
* Socket成员方法
* Socket accept()侦听并接受到此套接字的连接
*
* 实现步骤:
*      1.创建ServerSocket对象和系统要指定的端口号
*      2.使用ServerSocket对象中的accept方法,获取到请求客户端对象socket
*      3.使用socket对象中的方法getOutputStream()获取网络字节输入流对象
*      4.使用网络字节输入流getInputStream对象中的方法read,读取客户端发送的数据
*      5.使用socket对象中的方法getInputStream()获取网络字节输出流对象
*      6.使用网络字节输出流getOutputStream对象中的方法write,给客户端回写消息
*      7.释放资源(Socket,SocketServer)

服务器端的代码实现:

public class TCPServer {
    public static void main(String[] args) throws IOException {
        ServerSocket server = new ServerSocket(8888);
        Socket socket = server.accept();
        InputStream is = socket.getInputStream();
        byte[] bytes = new byte[1024];
        int len = is.read(bytes);
        System.out.println("服务器收到的消息:"+new String(bytes,0,len));
        OutputStream os = socket.getOutputStream();
        os.write("服务器回复的消息:收到谢谢".getBytes());
        socket.close();
        server.close();
    }
}

运行结果:

Client:服务器回复的消息:收到谢谢

Server:服务器收到的消息:你好服务器

 

服务端的端口号必须自己向系统指定特定端口号,以便客户端能正确访问到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值