111,126
社区成员
发帖
与我相关
我的任务
分享
private Socket socket = null;
public void Listener()
{
if (listenState == true)
{
IPAddress ipe = IPAddress.Parse(f1.concls.ipe.Trim());
IPEndPoint ipEndPoint = new IPEndPoint(ipe, f1.concls.port);
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(ipEndPoint);
socket.Listen(50);
socket.BeginAccept(new AsyncCallback(EndAcceptSocket), socket);
}
else
{
socket.Close();
return;
}
}
public void EndAcceptSocket(IAsyncResult iasy)
{
if (listenState == true)
{
try
{
Socket client = socket.EndAccept(iasy);//连接建立之后将通道赋值给client
SocketCls socketcls;
socketcls = new SocketCls();
socketcls.socket = client;
client.BeginReceive(socketcls._buffer, 0, socketcls.buffersize, 0, new AsyncCallback(EndReceiveSocket), socketcls);
socket.BeginAccept(new AsyncCallback(EndAcceptSocket), socket);
}
catch (Exception e)
{
}
}
else
{
return;
}
}
public void EndReceiveSocket(IAsyncResult iasy)
{
SocketCls socketcls = (SocketCls)iasy.AsyncState;
Socket client = socketcls.socket;
int len = client.EndReceive(iasy);
byte[] buffer = new byte[len];
buffer = socketcls._buffer;
f1.AddText(len.ToString());
client.BeginReceive(socketcls._buffer, 0, socketcls.buffersize, 0, new AsyncCallback(EndReceiveSocket), socketcls);
}
TcpListener listener = new TcpListener(...);
void StartListener()
{
ThreadPool.QueueUserWorkItem(state =>
{
try
{
listener.Start(50);
while (true)
{
Socket socket = listener.AcceptSocket(); //<--
StartTalking(socket); //<--
}
}
catch (SocketException se)
{
if (se.SocketErrorCode != SocketError.Interrupted) throw;
}
});
}
void StopListener()
{
listener.Stop();
}