TCP程序设计
客户端套接字Socket类
Socket client=new Socket("192.168.0.1",1100); //服务器的IP地址,可以是字符串或InetAddress对象,1100是服务器端口
Socket类常用方法:
getInputStream() 获取套接字输入流,返回InputStream对象
getOutputStream() 获取套接字输出流,返回OutputStream对象
isConnected() 查看套接字是否连接
close() 关闭套接字
服务器套接字ServerSocket类
ServerSocket server=new ServerSocket(1100); //1100是服务器开启的端口
ServerSocket类常用的方法:
accept() 等待客户端的连接,返回成功连接的Socket对象
getInetAddress() 返回此服务器套接字的本地地址
isClosed() 查看服务器套接字是否关闭
close() 关闭套接字
【案例】
创建两个Project,一个Server(服务器),一个Client(客户端),首先启动服务器,等待客户端访问
public class Server { public static void main(String[] args) { ServerSocket server= null;//创建服务器套接字 try { server = new ServerSocket(1100); System.out.println("服务器启动成功,等待客户端访问..."); //等待客户端连接,服务器通过此行代码与客户端互通 Socket client=server.accept(); System.out.println("有客户端接入,客户端IP:"+client.getInetAddress()); //服务器从客户端接收的消息 InputStream in=client.getInputStream();//输入流 byte[] bt=new byte[1024];//创建字节数组,并指定大小 int len=in.read(bt);//读入client字节流内容 String data=new String(bt,0,len);//字节转字符 System.out.println("客户端发来消息:"+data); //服务器反馈给客户端的信息 OutputStream out=client.getOutputStream();//输出流 String message="我是服务器,欢迎访问"; out.write(message.getBytes());//输出的内容,字符串转字节(字符数组) client.close(); } catch (IOException e) { e.printStackTrace(); } } }
public class Client { public static void main(String[] args) { try { Socket client=new Socket("127.0.0.1",1100);//创建套接字,指定服务器地址、端口。有效则自动连接 System.out.println("连接成功"); //客户端发给服务器的消息 OutputStream out=client.getOutputStream();//输出流 String message="我是客户端"; out.write(message.getBytes());//输出的内容,字符串转字节(字符数组) //客户端接收服务器反馈的信息 InputStream in=client.getInputStream();//输入流 byte[] bt=new byte[1024];//创建字节数组,并指定大小 int len=in.read(bt);//读入client字节流内容 String data=new String(bt,0,len);//字节转字符 System.out.println("服务器反馈的消息:"+data); client.close();//关闭套接字 } catch (IOException e) { e.printStackTrace(); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!