C# Socket简单例子(服务器与客户端通信)
来源:互联网 发布:vb.net帮助文档 编辑:程序博客网 时间:2024/05/16 11:25
服务端的(Server)完整代码如下:
- namespace SocketServer
- {
- class Program
- {
- private static byte[] result = new byte[1024];
- private static int myProt = 8885;
- static Socket serverSocket;
- static void Main(string[] args)
- {
-
- IPAddress ip = IPAddress.Parse("127.0.0.1");
- serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- serverSocket.Bind(new IPEndPoint(ip, myProt));
- serverSocket.Listen(10);
- Console.WriteLine("启动监听{0}成功", serverSocket.LocalEndPoint.ToString());
-
- Thread myThread = new Thread(ListenClientConnect);
- myThread.Start();
- Console.ReadLine();
- }
-
-
-
-
- private static void ListenClientConnect()
- {
- while (true)
- {
- Socket clientSocket = serverSocket.Accept();
- clientSocket.Send(Encoding.ASCII.GetBytes("Server Say Hello"));
- Thread receiveThread = new Thread(ReceiveMessage);
- receiveThread.Start(clientSocket);
- }
- }
-
-
-
-
-
- private static void ReceiveMessage(object clientSocket)
- {
- Socket myClientSocket = (Socket)clientSocket;
- while (true)
- {
- try
- {
-
- int receiveNumber = myClientSocket.Receive(result);
- Console.WriteLine("接收客户端{0}消息{1}", myClientSocket.RemoteEndPoint.ToString(), Encoding.ASCII.GetString(result, 0, receiveNumber));
- }
- catch(Exception ex)
- {
- Console.WriteLine(ex.Message);
- myClientSocket.Shutdown(SocketShutdown.Both);
- myClientSocket.Close();
- break;
- }
- }
- }
- }
- }
客户端(Client)的完整代码:
- namespace SocketClient
- {
- class Program
- {
- private static byte[] result = new byte[1024];
- static void Main(string[] args)
- {
-
- IPAddress ip = IPAddress.Parse("127.0.0.1");
- Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
- try
- {
- clientSocket.Connect(new IPEndPoint(ip, 8885));
- Console.WriteLine("连接服务器成功");
- }
- catch
- {
- Console.WriteLine("连接服务器失败,请按回车键退出!");
- return;
- }
-
- int receiveLength = clientSocket.Receive(result);
- Console.WriteLine("接收服务器消息:{0}",Encoding.ASCII.GetString(result,0,receiveLength));
-
- for (int i = 0; i < 10; i++)
- {
- try
- {
- Thread.Sleep(1000);
- string sendMessage = "client send Message Hellp" + DateTime.Now;
- clientSocket.Send(Encoding.ASCII.GetBytes(sendMessage));
- Console.WriteLine("向服务器发送消息:{0}" + sendMessage);
- }
- catch
- {
- clientSocket.Shutdown(SocketShutdown.Both);
- clientSocket.Close();
- break;
- }
- }
- Console.WriteLine("发送完毕,按回车键退出");
- Console.ReadLine();
- }
- }
- }
0 0