本文将编写2个控制台应用程序,一个是服务器端(server),一个是客户端(client),
通过server的监听,有新的client连接后,接收client发出的信息。
server代码如下:
1 using System; 2 using System.Net; 3 using System.Net.Sockets; 4 using System.Text; 5 using System.Threading; 6 7 namespace Server 8 { 9 class Program 10 { 11 static void Main(string[] args) 12 { 13 Socket server = new Socket( 14 //寻址方式,InterNetwork是指IPv4的方式 15 AddressFamily.InterNetwork, 16 //套接字类型,一般都是采取stream,即流的形式 17 SocketType.Stream, 18 //通信协议,这里使用TCP 19 ProtocolType.Tcp 20 ); 21 //绑定端口,参数是IP地址和端口号,IP地址即本机的IP地址,端口号则随便,只要不是已经被占用的即可 22 server.Bind(new IPEndPoint(IPAddress.Parse("192.168.1.101"), 12312)); 23 //设置监听的client上限 24 server.Listen(5); 25 Console.WriteLine("server is listening"); 26 //用于接收client连接的线程 27 Thread tAccept = new Thread(() => 28 { 29 //使用死循环 30 while (true) 31 { 32 //接收 33 Socket client = server.Accept(); 34 Console.WriteLine("new client is connection,ip is" + client.RemoteEndPoint); 35 //用于接收信息的线程 36 Thread tReceive = new Thread(() => 37 { 38 while (true) 39 { 40 byte[] bs = new byte[1024]; 41 //使用字节数组接收 42 int length = client.Receive(bs); 43 string str = Encoding.UTF8.GetString(bs); 44 Console.WriteLine(str); 45 } 46 } 47 ); 48 tReceive.IsBackground = true; 49 tReceive.Start(); 50 } 51 } 52 ); 53 tAccept.IsBackground = true; 54 tAccept.Start(); 55 Console.ReadKey(); 56 } 57 } 58 }
client代码如下:
1 using System; 2 using System.Net; 3 using System.Net.Sockets; 4 using System.Text; 5 6 namespace Client 7 { 8 class Program 9 { 10 static void Main(string[] args) 11 { 12 Socket client = new Socket( 13 AddressFamily.InterNetwork, 14 SocketType.Stream, 15 ProtocolType.Tcp 16 ); 17 client.Connect(new IPEndPoint(IPAddress.Parse("192.168.1.101"), 12312)); 18 while (true) 19 { 20 Console.Write("please type something:"); 21 string str = Console.ReadLine(); 22 if (str.Equals("quit")) 23 { 24 break; 25 } 26 byte[] bs = Encoding.UTF8.GetBytes(str); 27 client.Send(bs); 28 } 29 30 //关闭通信的方式,这里不需用,因为会引发异常 31 //client.Close(); 32 //client.Shutdown(SocketShutdown.Both); 33 Console.ReadKey(); 34 } 35 } 36 }
运行:
1、先运行server;
2、再运行client,输入内容后,server会显示内容,输入“quit”则关闭通信连接。
完成
时间: 2024-10-14 05:38:24