标签:
本文将编写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”则关闭通信连接。
完成
标签:
原文地址:http://www.cnblogs.com/chenyucong/p/5728331.html