110,567
社区成员
发帖
与我相关
我的任务
分享
IPAddress ip1;
private bool isExit = false;
TcpListener listener;
private ManualResetEvent allDone = new ManualResetEvent(false);
myThread = new Thread(new ThreadStart(AcceptConnection));
myThread.Start();
private void AcceptConnection()
{
IPHostEntry ipHost = Dns.Resolve(Dns.GetHostName());
ipHost.AddressList[0];
ip1 = IPAddress.Parse("172.19.58.164");
listener = new TcpListener(ip1, 3001);
listener.Start();
while (isExit == false)
{
try
{
allDone.Reset();
Application.DoEvents();
AsyncCallback callback = new AsyncCallback(AcceptTcpClientCallBack);
listener.BeginAcceptTcpClient(callback, listener);
allDone.WaitOne();
}
catch (Exception e)
{
break;
}
}
}
private void AcceptTcpClientCallBack(IAsyncResult iar)
{
try
{
allDone.Set();
TcpListener mylistener = (TcpListener)iar.AsyncState;
TcpClient client = mylistener.EndAcceptTcpClient(iar);
DataReadWrite datareadwrite = new DataReadWrite(client);
datareadwrite.ns.BeginRead(datareadwrite.read, 0, datareadwrite.read.Length, ReadCallBack, datareadwrite);
}
catch (Exception e)
{
return;
}
}
private void ReadCallBack(IAsyncResult iar)
{
string revstring = string.Empty;
string msg = string.Empty;
try
{
DataReadWrite datareadwrite = (DataReadWrite)iar.AsyncState;
int recv = datareadwrite.ns.EndRead(iar);
revstring.Remove(0, revstring.Length);
revstring = Encoding.UTF8.GetString(datareadwrite.read, 0, recv);
if (revstring.Length != 0)
{
msg.Remove(0, msg.Length);
msg += System.Environment.NewLine + "收到客户端请求:" + " " + datareadwrite.client.Client.RemoteEndPoint +" "+ revstring + " " + Convert.ToString(DateTime.Now);
//显示到界面
_bllSeRs.ShowFunctionReturnParameter(msg);
revstring = StrToCommand(revstring);
SendString(datareadwrite, revstring);
}
if (isExit == false)
{
datareadwrite.InitReadArray();
datareadwrite.ns.BeginRead(datareadwrite.read, 0, datareadwrite.read.Length, ReadCallBack, datareadwrite);
}
}
catch (Exception e)
{
}
}