您的位置:首页 > 理论基础 > 计算机网络

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

2016-03-09 22:08 891 查看
来源:http://www.bjsxt.com/

一、S02E189_01网络编程_TCP_Socket通信原理

基于tcp:面向连接 安全可靠 效率低 类似于打电话

一:面向连接:请求-响应 Request-Response

二:Socket编程

1、服务器:ServerSocket

2、客户端: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();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: