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先后中断客户端和服务端。