1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 using System.Net.Sockets;
5 using System.Net;
6 using System.Threading;
7
8 namespace Controller
9 {
10 public static class SocketServer
11 {
12 private static byte[] result = new byte[1024];
13 private static int myProt = 6000; //端口
14 private static Socket serverSocket;
15 private static List<Socket> clientSockets=new List<Socket>();
16 public static void Init()
17 {
18 //服务器IP地址
19 IPAddress ip = IPAddress.Parse("127.0.0.1");
20 serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
21 serverSocket.Bind(new IPEndPoint(ip, myProt)); //绑定IP地址:端口
22 serverSocket.Listen(10); //设定最多10个排队连接请求
23 Console.WriteLine("启动监听{0}成功", serverSocket.LocalEndPoint.ToString());
24 //通过Clientsoket发送数据
25 Thread myThread = new Thread(ListenClientConnect);
26 myThread.Start();
27 Console.ReadLine();
28 }
29
30 /// <summary>
31 /// 监听客户端连接
32 /// </summary>
33 private static void ListenClientConnect()
34 {
35 while (true)
36 {
37 Socket clientSocket = serverSocket.Accept();
38 clientSockets.Add(clientSocket);
39 Thread receiveThread = new Thread(ReceiveMessage);
40 receiveThread.Start(clientSocket);
41 }
42 }
43
44 /// <summary>
45 /// 接收消息
46 /// </summary>
47 /// <param name="clientSocket"></param>
48 private static void ReceiveMessage(object clientSocket)
49 {
50 Socket myClientSocket = (Socket)clientSocket;
51 while (true)
52 {
53 try
54 {
55 //通过clientSocket接收数据
56 int receiveNumber = myClientSocket.Receive(result);
57 string strContent = Encoding.ASCII.GetString(result, 0, receiveNumber);
58 Console.WriteLine("接收客户端{0}消息{1}", myClientSocket.RemoteEndPoint.ToString(), Encoding.ASCII.GetString(result, 0, receiveNumber));
59 }
60 catch (Exception ex)
61 {
62 Console.WriteLine(ex.Message);
63 myClientSocket.Shutdown(SocketShutdown.Both);
64 myClientSocket.Close();
65 break;
66 }
67 }
68 }
69
70 public static void SendMessage(string message)
71 {
72 foreach(Socket clientSocket in clientSockets)
73 clientSocket.Send(Encoding.ASCII.GetBytes(message));
74 }
75 }
76 }
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 using System.Net.Sockets;
5 using System.Net;
6 using System.Threading;
7
8 namespace Player
9 {
10 public static class SocketClient
11 {
12 private static Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
13 private static byte[] result = new byte[1024];
14 public static void Init()
15 {
16 //设定服务器IP地址
17 IPAddress ip = IPAddress.Parse("127.0.0.1");
18 try
19 {
20 clientSocket.Connect(new IPEndPoint(ip, 6000)); //配置服务器IP与端口
21 Console.WriteLine("连接服务器成功");
22 }
23 catch
24 {
25 Console.WriteLine("连接服务器失败,请按回车键退出!");
26 return;
27 }
28
29 Thread receiveThread = new Thread(ReceiveMessage);
30 receiveThread.Start();
31
32 }
33 /// <summary>
34 /// 接收消息
35 /// </summary>
36 /// <param name="clientSocket"></param>
37 private static void ReceiveMessage()
38 {
39 while (true)
40 {
41 try
42 {
43 //通过clientSocket接收数据
44 int receiveNumber = clientSocket.Receive(result);
45 string strContent = Encoding.ASCII.GetString(result, 0, receiveNumber);
46 Console.WriteLine("接收服务端{0}消息{1}", clientSocket.RemoteEndPoint.ToString(), Encoding.ASCII.GetString(result, 0, receiveNumber));
47 }
48 catch (Exception ex)
49 {
50 Console.WriteLine(ex.Message);
51 clientSocket.Shutdown(SocketShutdown.Both);
52 clientSocket.Close();
53 break;
54 }
55 }
56 }
57 public static void SendMessage(string message)
58 {
59 string sendMessage = message;
60 clientSocket.Send(Encoding.ASCII.GetBytes(sendMessage));
61 }
62 }
63 }