111,126
社区成员
发帖
与我相关
我的任务
分享
// TODO: 在此处添加代码以启动服务。
StringBuilder logsb = new StringBuilder();
//设置缓冲区1024字节
byte[] buffer = new byte[10];
//初始化ServerSocket
IPHostEntry serverHost = Dns.GetHostEntry(Dns.GetHostName());
IPAddress serverIP = serverHost.AddressList[0];
IPEndPoint serverPort = new IPEndPoint(serverIP, 11010); //端口号按实际设置
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//将ServerSocket绑定到本地
try
{
serverSocket.Bind(serverPort);
//开始监听,并设置最大连接队列为10
serverSocket.Listen(2);
while (true)
{
logsb.Append("服务器地址 : " + serverPort.ToString() + "\r\n");
logsb.Append("等待连接...\r\n");
StreamWriter LogWriter = new StreamWriter("D:\\SocketService.log", true, System.Text.Encoding.GetEncoding("GB2312"));
LogWriter.Write("" + logsb.ToString() + "\r\n");
LogWriter.Close();
//此时Listenling线程将暂停等待,直到有连接请求的到来
Socket handler = serverSocket.Accept();
string receiveData = "";
Single dataTotalSize = 0;
int dataSize = handler.Receive(buffer);
receiveData += Encoding.UTF8.GetString(buffer, 0, dataSize);
dataTotalSize += dataSize;
//处理此请求
while (dataSize > 0 && handler.Available > 0)
{
dataSize = handler.Receive(buffer);
receiveData += Encoding.UTF8.GetString(buffer, 0, dataSize);
dataTotalSize += dataSize;
}
//显示接收到的请求数据
logsb.Append("接收数据[大小:" + dataTotalSize + " bytes] 来自 [" + handler.RemoteEndPoint.ToString() + "]: \r\n " + receiveData + "\r\n");
string[] types = receiveData.Split(':');
string backcontent = "";
if (types != null && types.Length > 0)
{
if (Convert.ToString(types[0]) == "Login")
{
backcontent = Login(Convert.ToString(types[1]));
}
if (Convert.ToString(types[0]) == "SignCard")
{
backcontent = SignCard(Convert.ToString(types[1]));
}
}
//将接收到的数据和数据大小返回给Client
byte[] returnBytes = Encoding.UTF8.GetBytes(backcontent + "\r\n数据大小: " + dataTotalSize);
handler.Send(returnBytes);
handler.Shutdown(SocketShutdown.Both);
handler.Close();
}
}
catch (Exception)
{