网络编程_TCP_Socket通信原理_多个客户端_聊天室原理JAVA189-190

来源:互联网 发布:网络教育本科毕业条件 编辑:程序博客网 时间:2024/06/06 13:42

来源:http://www.bjsxt.com/
一、S02E189_01网络编程_TCP_Socket通信原理
基于tcp:面向连接 安全可靠 效率低 类似于打电话
一:面向连接:请求-响应 Request-Response
二:Socket编程
1、服务器:ServerSocket
2、客户端:Socket

Socket通信

Socket

package com.test.net.tcp.socket;import java.io.DataOutputStream;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;/** * 必须先启动服务器后连接 * 1、创建服务器,指定端口 ServerSocket(int port) * 2、接收客户端连接,阻塞式 * 3、发送数据+接收数据 */public class Server {    public static void main(String[] args) throws IOException {        //1、创建服务器,指定端口  ServerSocket(int port)        ServerSocket server = new ServerSocket(8888);        //2、接收客户端连接,阻塞式        Socket socket = server.accept();//这是request请求,一定时间内没有响应返回错误        System.out.println("一个客户端建立连接");        //3、发送数据        String msg = "欢迎使用";        //输出流        /*        BufferedWriter bw = new BufferedWriter(                new OutputStreamWriter(socket.getOutputStream()));        bw.write(msg);        bw.newLine();//String echo = br.readLine();//阻塞式,没有行结束符,会报异常        bw.flush();//不要关闭流,服务器是24小时工作的        */        DataOutputStream dos = new DataOutputStream(socket.getOutputStream());        dos.writeUTF(msg);        dos.flush();     }}
package com.test.net.tcp.socket;import java.io.DataInputStream;import java.io.IOException;import java.net.Socket;import java.net.UnknownHostException;/** * 1、创建客户端,必须指定服务器+端口,此时就在连接    Socket(String host,int port) * 2、接收数据+发送数据 */public class Client {    public static void main(String[] args) throws UnknownHostException, IOException {        //1、创建客户端,必须指定服务器+端口,此时就在连接 Socket(String host,int port)        Socket client = new Socket("localhost",8888);        //2、接收数据        /*        BufferedReader br = new BufferedReader(                new InputStreamReader(client.getInputStream()));        String echo = br.readLine();//阻塞式,没有行结束符,会报异常        System.out.println(echo);        */        DataInputStream dis = new DataInputStream(client.getInputStream());        String echo = dis.readUTF();        System.out.println(echo);    }}

二、S02E190_01网络编程_TCP_Socket通信、多个客户端、聊天室原理

package com.test.net.tcp.socket;import java.io.DataOutputStream;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;/** * 必须先启动服务器后连接 * 1、创建服务器,指定端口 ServerSocket(int port) * 2、接收客户端连接,阻塞式 * 3、发送数据+接收数据 *  * 接收多个客户端 */public class MultiServer {    public static void main(String[] args) throws IOException {        //1、创建服务器,指定端口  ServerSocket(int port)        ServerSocket server = new ServerSocket(8888);        //2、接收客户端连接,阻塞式         while(true){//死循环,一个accept()一个客户端            Socket socket = server.accept();//这是request请求,一定时间内没有响应返回错误            System.out.println("一个客户端建立连接");            //3、发送数据            String msg = "欢迎使用";            //输出流            DataOutputStream dos = new DataOutputStream(socket.getOutputStream());            dos.writeUTF(msg);            dos.flush();        }    }}
1 0
原创粉丝点击