《c#socket简单例子(服务器与客户端通信)》由会员分享,可在线阅读,更多相关《c#socket简单例子(服务器与客户端通信)(5页珍藏版)》请在金锄头文库上搜索。
1、 C# Socket简单例子(服务器与客户端通信)分类: C#.NET2011-07-24 15:55 23710人阅读 评论(18) 收藏 举报socket服务器c#threadserverbyte这个例子只是简单实现了如何使用 Socket 类实现面向连接的通信。注意:此例子的目的只是为了说明用套接字写程序的大概思路,而不是实际项目中的使用程序。在这个例子中,实际上还有很多问题没有解决,如消息边界问题、端口号是否被占用、消息命令的解析问题等。下面是两个程序的代码,(两个程序均为控制台程序)先发服务端的(Server)完整代码如下:引入命名空间:csharp view plaincopypr
2、int?1 using System.Net.Sockets; 2 using System.Net; 3 using System.Threading; 完整代码如下:csharp view plaincopyprint?4 namespace SocketServer 5 6 class Program 7 8 private static byte result = new byte1024; 9 private static int myProt = 8885; /端口 10 static Socket serverSocket; 11 static void Main(string
3、args) 12 13 /服务器IP地址 14 IPAddress ip = IPAddress.Parse(127.0.0.1); 15 serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 16 serverSocket.Bind(new IPEndPoint(ip, myProt); /绑定IP地址:端口 17 serverSocket.Listen(10); /设定最多10个排队连接请求 18 Console.WriteLine(启动监听0成功, serve
4、rSocket.LocalEndPoint.ToString(); 19 /通过Clientsoket发送数据 20 Thread myThread = new Thread(ListenClientConnect); 21 myThread.Start(); 22 Console.ReadLine(); 23 24 25 / 26 / 监听客户端连接 27 / 28 private static void ListenClientConnect() 29 30 while (true) 31 32 Socket clientSocket = serverSocket.Accept(); 33
5、 clientSocket.Send(Encoding.ASCII.GetBytes(Server Say Hello); 34 Thread receiveThread = new Thread(ReceiveMessage); 35 receiveThread.Start(clientSocket); 36 37 38 39 / 40 / 接收消息 41 / 42 / 43 private static void ReceiveMessage(object clientSocket) 44 45 Socket myClientSocket = (Socket)clientSocket; 4
6、6 while (true) 47 48 try 49 50 /通过clientSocket接收数据 51 int receiveNumber = myClientSocket.Receive(result); 52 Console.WriteLine(接收客户端0消息1, myClientSocket.RemoteEndPoint.ToString(), Encoding.ASCII.GetString(result, 0, receiveNumber); 53 54 catch(Exception ex) 55 56 Console.WriteLine(ex.Message); 57 my
7、ClientSocket.Shutdown(SocketShutdown.Both); 58 myClientSocket.Close(); 59 break; 60 61 62 63 64 以上是服务端(server)的完整代码。客户端(Client)的完整代码如下:引入命名空间:csharp view plaincopyprint?65 using System.Net; 66 using System.Net.Sockets; 67 using System.Threading; 完整代码:csharp view plaincopyprint?68 namespace SocketCli
8、ent 69 70 class Program 71 72 private static byte result = new byte1024; 73 static void Main(string args) 74 75 /设定服务器IP地址 76 IPAddress ip = IPAddress.Parse(127.0.0.1); 77 Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 78 try 79 80 clientSocket.Con
9、nect(new IPEndPoint(ip, 8885); /配置服务器IP与端口 81 Console.WriteLine(连接服务器成功); 82 83 catch 84 85 Console.WriteLine(连接服务器失败,请按回车键退出!); 86 return; 87 88 /通过clientSocket接收数据 89 int receiveLength = clientSocket.Receive(result); 90 Console.WriteLine(接收服务器消息:0,Encoding.ASCII.GetString(result,0,receiveLength);
10、91 /通过 clientSocket 发送数据 92 for (int i = 0; i 10; i+) 93 94 try 95 96 Thread.Sleep(1000); /等待1秒钟 97 string sendMessage = client send Message Hellp + DateTime.Now; 98 clientSocket.Send(Encoding.ASCII.GetBytes(sendMessage); 99 Console.WriteLine(向服务器发送消息:0 + sendMessage); 100 101 catch 102 103 clientSocket.Shutdown(SocketShutdown.Both); 104 clientSocket.Close(); 105 break; 106 107 108 Console.WriteLine(发送完毕,按回车键退出); 109 Console.ReadLine(); 110