8年前,令我窒息的Java socket体验学习
本来已经放弃编程了,那时我发誓再也不去IT培训班了,如果找不到工作,我就去工地上打工。可心有不甘,老是惦记着,我不想天天面对生产线,做一个丧失思考能力的操作工,可后来呀,还是走上了程序员之路。。。这么多年了,接触到C#的socket编程,可我还能感受到当时想去洋谷科技而又不能的那种无奈,迷茫。
我不会Java,仅用C#来说明,用socket实现聊天功能,代码是网上抄的,但可以说明当年我感觉高深的socket编程
Server:
1 using System; 2 using System.Net; 3 using System.Net.Sockets; 4 using System.IO; 5 6 namespace TCPServer 7 { 8 class Program 9 { 10 static void Main(string[] args) 11 { 12 TcpClient client=null; 13 try 14 { 15 IPAddress myIp=IPAddress.Parse("127.0.0.1"); 16 TcpListener myServer = new TcpListener(myIp, 6688); 17 18 myServer.Start(); 19 Console.WriteLine("Wait for client's connection...."); 20 21 client = myServer.AcceptTcpClient(); 22 Console.WriteLine("Client is already connected..."); 23 24 NetworkStream stream = client.GetStream(); 25 StreamReader sr = new StreamReader(stream); 26 StreamWriter sw = new StreamWriter(stream); 27 28 while(true) 29 { 30 Console.WriteLine("\nClient:\n" + sr.ReadLine()+"\n"); 31 Console.WriteLine("Server:"); 32 string msg= Console.ReadLine(); 33 sw.WriteLine(msg); 34 sw.Flush(); 35 } 36 } 37 catch 38 { 39 if(client!=null) 40 { 41 client.Dispose(); 42 } 43 } 44 } 45 } 46 }
Client:
1 using System; 2 using System.IO; 3 using System.Net; 4 using System.Net.Sockets; 5 6 namespace TCPClient 7 { 8 class Program 9 { 10 static void Main(string[] args) 11 { 12 TcpClient client=null; 13 try 14 { 15 IPAddress myIp = IPAddress.Parse("127.0.0.1"); 16 client = new TcpClient(); 17 client.Connect(myIp, 6688); 18 Console.WriteLine("server connected...please enter contact content..."); 19 20 NetworkStream stream = client.GetStream(); 21 StreamReader sr = new StreamReader(stream); 22 StreamWriter sw = new StreamWriter(stream); 23 24 while (true) 25 { 26 Console.WriteLine("Client:"); 27 string msg = Console.ReadLine(); 28 sw.WriteLine(msg); 29 sw.Flush(); 30 Console.WriteLine("\nServer:\n" + sr.ReadLine()+"\n"); 31 } 32 } 33 catch 34 { 35 if(client!=null) 36 { 37 client.Dispose(); 38 } 39 } 40 } 41 } 42 }
先运行Server端
看到Wait for client's connection... 后,运行client端
然后,client端发送信息"Hi Server, I am from client."到server端,server端收到client发来的消息
然后,server端发送信息"Hi Client, I am from Server."到client端,client端收到server发来的消息
按Ctrl+c先后中断客户端和服务端。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?