110,499
社区成员
发帖
与我相关
我的任务
分享
class Program
{
static void Main(string[] args)
{
MySocket s = new MySocket();
s.CreatMonitor();
Console.ReadLine();
}
}
class MySocket
{
private int port = 10000;
/// <summary>
/// 创建一个监听端口
/// </summary>
public void CreatMonitor()
{
Socket acceptSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress localHost = Dns.GetHostAddresses(Dns.GetHostName())[0];
IPEndPoint localPoint = new IPEndPoint(localHost, port);
acceptSocket.Bind(localPoint);
acceptSocket.Listen(200);
acceptSocket.BeginAccept(new AsyncCallback(AcceptCallBack), acceptSocket); //开始接受连接
}
/// <summary>
/// 有连接进入后执行的方法
/// </summary>
/// <param name="ar"></param>
private void AcceptCallBack(IAsyncResult ar)
{
Socket acceptSocket = (Socket)ar.AsyncState;
try
{
Console.WriteLine("有一个连接进入");
Socket receiveS = acceptSocket.EndAccept(ar); //第二次连接时,会在这里出问题
acceptSocket.BeginAccept(new AsyncCallback(AcceptCallBack), receiveS);
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
}
}