sock服务器JAVA socket服务器
在Socket编程中,发送方和接收方的两个Socket之间必须建立连接,才能够在TCP协议的基础上进行通信。一般服务器端ServerSocket先启动,等待客户端的请求。客户端Socket可以向服务器发送连接请求,得到允许后进行连接。一旦这两个Socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送和接受操作。
ServerSocket 类的对象是服务器端,实现服务器套接字。ServerSocket类主要用来监听指定端口并接受客户端发来的连接请求,也可以向客户端发送消息。
创建TCP的Socket,需要建立服务端和客户端。首先建立服务器端,给服务器分配一个端口号。服务器使用accept方法等待客户端的信号。当客户端的信号一到就打开Socket连接,从Socket中取得OutputStream 和 InputStream。 创建一个TCP服务器端程序具体有以下几个步骤。
1 创建一个服务器端对象
2 从服务器端接受客户连接请求
3 创建一个服务线程处理新的连接
4 在服务线程中,从socket中获得I/O流
5 对I/O流进行读/写操作,完成与客户的交互
6 关闭I/O流
7 关闭Socket
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintStream; import .ServerSocket; import .Socket; //写服务器端,对端口进行监听,接受客户端请求并未客户端服务 public class TCPServer { public static void main(String[] args) { // TODO Auto-generated method stub //服务器对端口8888进行监听,接受到客户端连接请求后,创建和启动服务线程 long count = 0; ServerSocket serverSocket = null; try { serverSocket = new ServerSocket(8888); System.out.println("服务器对8888端口实施监听..."); while(true)//服务器循环接受客户端的请求,为不同的客户端提供服务 { //接受客户端的连接请求,若有连接请求则返回连接对应的Socket对象 Socket socket = serverSocket.accept(); count++; //创建服务器线程 ServerThread serverThread = new ServerThread(socket, count); serverThread.start(); } } catch(IOException e) { } } } //定义ServerThread class, inherited by Thread class class ServerThread extends Thread { //根据客户端和计数器来创建服务器线程 Socket socket; long count; public ServerThread(Socket socket, long c)//构造方法 { this.count = c; this.socket = socket; } public void run() { int timeCounter = 0; try { //获取套接字的输入流 InputStream inputStream = socket.getInputStream(); //封装输入流 InputStreamReader inputStreamReader = new InputStreamReader(inputStream); //封装输入流 BufferedReader bufferedReader = new BufferedReader(inputStreamReader); //获取套接字的输入流 OutputStream outputStream = socket.getOutputStream();//获取套接字的输入流 //封装输出流 PrintStream printStream = new PrintStream(outputStream); while(true) { timeCounter ++; //声明用来计数的变量 String string = bufferedReader.readLine(); if(string.equals("exit")) { //如果客户端输入的是“exit”,则关闭客户端 printStream.println("exit"); printStream.close(); break; } //告知客户端是第几次转换,有几个客户端,并输出转换的字符串 printStream.println("这是" + socket.toString() + "第" + timeCounter + "次发送转换请求,现在有" + count + "个客户在线,转换后的字符串为 " + string.toUpperCase()); printStream.flush(); } } catch(IOException e) { e.printStackTrace(); } } }SocketRocket:高效的iOS与macOS实时通信WebSocket库
teamspeak服务器docker teamspeak服务器配置
Net 4.5 WebSocket 在 Windows 7, Windows 8 and Server 2012上的比较WebSocket4Net
Net 4.5 WebSocket 在 Windows 7, Windows 8 and Server 2012上的比较以及问题WebSocket4Net
Docker的三种网络代理配置:dockerd pull镜像代理;容器docker run网络代理;docker build代理--build-argdocker pull 代理
Windows Socket 编程:TCP服务器端windows socket编程
nginx websocket 代理nginx 代理websocket
linux 使用socket代理nginx socket代理