首先要打开监听
1
2
3
4
|
Listener =
new
Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
IPEndPoint hostEntry =
new
IPEndPoint(getLocalmachineIPAddress(), ServerPort);
Listener.Bind(hostEntry);
Listener.Listen(ConnectionsQueueLength);
|
1. AcceptAsync异步方式
1
2
3
4
5
|
socketEventArg =
new
SocketAsyncEventArgs();
socketEventArg.Completed +=
new
EventHandler<SocketAsyncEventArgs>(SocketEventArg_Completed);
socketEventArg.RemoteEndPoint = hostEntry;
socketEventArg.UserToken = Listener;
Listener.AcceptAsync(socketEventArg);
|
void
SocketEventArg_Completed(
object
sender, SocketAsyncEventArgs e)
{
if
(e.LastOperation == SocketAsyncOperation.Accept)
{
Socket acceptSocket = e.AcceptSocket;
if
(acceptSocket !=
null
)
{
// 处理方法
}
}
e.AcceptSocket =
null
;
Listener.AcceptAsync(e);
}
|
2. Accept方式
1
2
3
4
5
6
7
|
while
(
true
)
{
Socket acceptSocket = Listener.Accept();
if
(acceptSocket !=
null
)
{
// 处理代码
|
1
2
|
}
}
|
3. BeginAccept方式
1
2
3
4
|
while
(
true
)
{
Listener.BeginAccept(
new
AsyncCallback(AcceptCallBack), Listener);
}
|
1
|
|
private
void
AcceptCallBack(IAsyncResult result)
{
Socket acceptSocket = (Socket)result.AsyncState;
// 处理方法
}
|