JAVA Socket通信(包含服务端和客户端)
实例上有足够的注释我在这里就不再多说了,如果有疑问可以给我回复信息。
客户端:
package com.socket.demo; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.InetAddress; import java.net.Socket; /** * 简单的数据通信客户端 * @author USER * */ public class Client{ private Socket socket; private DataOutputStream out; private DataInputStream in; public Client(){ try{ socket=new Socket(InetAddress.getLocalHost(),20000); //建立连接server之网络平台socket out=new DataOutputStream(socket.getOutputStream()); //建立网络输出串流对象os out.writeUTF(getMsg()); //输出讯息传往server in=new DataInputStream(socket.getInputStream()); //建立网络输入串流对象is System.out.println("message:"+in.readUTF()); //印出msgin内容 socket.close();//关闭连接 //关闭平台socket } catch(IOException e){ //网络连接例外处理执行区 System.out.println(e.toString()); System.exit(1); } } /** * 从键盘上录入数据并发送至服务端 * @return */ private String getMsg(){ DataInputStream inputStream = new DataInputStream(System.in); try { return inputStream.readUTF(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } /** * 程序的入口main方法 * @param args */ public static void main(String args[]){ new Client(); } }
服务器端:
package com.socket.demo; import java.net.*; import java.io.*; import java.util.*; /** * 服务器端 * @author USER * */ public class Server{ private ServerSocket SS; private DataOutputStream out; private DataInputStream in; private Socket socket; public Server(){ try{ SS=new ServerSocket(20000);//创建服务Socket并指定端口号 System.out.println("Server created.\nWaiting..."); while(true){ socket=SS.accept();//接收客户单的请求 System.out.println("connected form clinet"+socket.getInetAddress().getHostAddress());//打印出客户端主机地址 System.out.println("clinet's name:"+socket.getInetAddress().getHostName());//打印客户端主机名称 System.out.println("date:"+new Date());//打印时间 in=new DataInputStream(socket.getInputStream());//输入流 /*打印出客户端输入的信息*/ System.out.println("message:"+in.readUTF()); out=new DataOutputStream(socket.getOutputStream());//输出流 out.writeUTF("服务器端数据:"+in.readUTF());//将输入的信息从服务器端再返回给客户端 } } catch(IOException e) { System.out.println(e.toString()); System.exit(1); } } public static void main(String args[]){ new Server();//启动服务器端 } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库