网站傻瓜式建设品牌维护
news/
2025/10/7 14:17:43/
文章来源:
网站傻瓜式建设,品牌维护,优秀建筑案例分析,网络与新媒体就业方向及前景文章目录 1. Socket简介2. ServerSocket3. Socket4. 服务器端代码5. 客户端代码 1. Socket简介
Socket#xff08;Java套接字#xff09;是Java编程语言提供的一组类和接口#xff0c;用于实现网络通信。它基于Socket编程接口#xff0c;提供了一种简单而强大的方式来实现… 文章目录 1. Socket简介2. ServerSocket3. Socket4. 服务器端代码5. 客户端代码 1. Socket简介
SocketJava套接字是Java编程语言提供的一组类和接口用于实现网络通信。它基于Socket编程接口提供了一种简单而强大的方式来实现网络应用程序。
Socket类库提供了丰富的方法和功能用于处理网络通信的各个方面。它支持TCP和UDP协议可以实现可靠的、面向连接的通信TCP或不可靠的、无连接的通信UDP。Java Socket还提供了一些高级功能如多线程处理、异步通信、加密通信等以满足不同网络应用的需求。
本文主要使用Socket实现UDP版的客户端和服务器 DatagramSocket 是UDP Socket用于发送和接收UDP数据报。 DatagramPacket是UDP Socket发送和接收的数据报。
2. ServerSocket
ServerSocket 是创建TCP服务端Socket的API。
方法说明ServerSocket(int port)创建一个服务端流套接字Socket并绑定到指定端口
ServerSocket 方法
方法说明Socket accept()开始监听指定端口创建时绑定的端口有客户端连接后返回一个服务端Socket 对象并基于该Socket建立与客户端的连接否则阻塞等待void close()关闭此套接字
3. Socket
Socket API Socket 是客户端Socket或服务端中接收到客户端建立连接accept方法的请求后返回的服务端 Socket。
不管是客户端还是服务端Socket都是双方建立连接以后保存的对端信息及用来与对方收发数据 的。
Socket 构造方法:
方法说明Socket(String host, int port)创建一个客户端流套接字Socket并与对应IP的主机上对应端口的 进程建立连接
Socket 方法
方法说明InetAddress getInetAddress()返回套接字所连接的地址InputStream getInputStream()返回此套接字的输入流OutputStream getOutputStream()返回此套接字的输出流
4. 服务器端代码
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;public class TcpEchoServer {// 用于监听客户端private ServerSocket listenSocket null;public TcpEchoServer(int port) throws IOException {listenSocket new ServerSocket(port);}public void start() throws IOException {System.out.println(服务器启动!);ExecutorService service Executors.newCachedThreadPool();while (true) {// 接收客户端的连接Socket clientSocket listenSocket.accept();service.submit(new Runnable() {Overridepublic void run() {try {processConnection(clientSocket);} catch (IOException e) {throw new RuntimeException(e);}}});}}public void processConnection(Socket socket) throws IOException {System.out.printf([%s: %d], 客户端上线!\n, socket.getInetAddress().toString(), socket.getPort());// 处理客户端请求try (InputStream inputStream socket.getInputStream();OutputStream outputStream socket.getOutputStream()) {while (true) {// 读取请求并解析Scanner scanner new Scanner(inputStream);if (!scanner.hasNext()) {System.out.printf([%s: %d],客户端下线\n, socket.getInetAddress().toString(), socket.getPort());break;}// 读取请求,并返回响应String request scanner.next();String response process(request);PrintWriter printWriter new PrintWriter(outputStream);printWriter.println(response);// 刷新缓冲区printWriter.flush();System.out.printf([%s: %d], req: %s resp: %s \n, socket.getInetAddress().toString(), socket.getPort(),request, response);}} finally {socket.close();}}private String process(String request) {return request;}public static void main(String[] args) throws IOException {TcpEchoServer server new TcpEchoServer(5678);server.start();}
}5. 客户端代码
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;public class TcpEchoClient {private Socket socket null;public TcpEchoClient(String serverIp, int serverPort) throws IOException {socket new Socket(serverIp, serverPort);}public void start() throws IOException {System.out.println(客户端启动!);Scanner scanner new Scanner(System.in);try (InputStream inputStream socket.getInputStream();OutputStream outputStream socket.getOutputStream()) {while (true) {// 读取请求System.out.print(- );String request scanner.next();// 发送请求给服务器PrintWriter printWriter new PrintWriter(outputStream);printWriter.println(request);// 刷新缓冲区printWriter.flush();// 读取请求Scanner respScanner new Scanner(inputStream);String response respScanner.next();System.out.println(response);}}}public static void main(String[] args) throws IOException {TcpEchoClient client new TcpEchoClient(127.0.0.1, 5678);client.start();}
}运行结果:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/930498.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!