实现内容:在一个服务器启动监听 N个客户端会自动连接该服务器只是连接并不发送消息 服务器需要做的是客户端连 接后给客户端发送消息
private void Listen()
{
IPAddress ipAddress = IPAddress.Parse("192.168.1.2");
IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 5500); //Create a TCP/IP socket
Socket listener = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp); try
{
listener.Bind(localEndPoint);
listener.Listen(100); while (true)
{
//Set the event to nonsingaled state
allDone.Reset(); //Start Waiting
listener.BeginAccept(
new AsyncCallback(AcceptConn1),
listener); //WaitUntil
allDone.WaitOne();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
} public void AcceptConn1(IAsyncResult iar)
{
//Signal the main thread to conntinue
allDone.Set(); Socket s = (Socket)iar.AsyncState;
try
{
Socket handler = s.EndAccept(iar);
StateObject state = new StateObject();
state.worksocket = handler;
handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallBack), state);
}
catch (Exception ex)
{
}
}上面是代码 客户端连接同时发送给客户端消息应该写在哪里 求指教
private void Listen()
{
IPAddress ipAddress = IPAddress.Parse("192.168.1.2");
IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 5500); //Create a TCP/IP socket
Socket listener = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp); try
{
listener.Bind(localEndPoint);
listener.Listen(100); while (true)
{
//Set the event to nonsingaled state
allDone.Reset(); //Start Waiting
listener.BeginAccept(
new AsyncCallback(AcceptConn1),
listener); //WaitUntil
allDone.WaitOne();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
} public void AcceptConn1(IAsyncResult iar)
{
//Signal the main thread to conntinue
allDone.Set(); Socket s = (Socket)iar.AsyncState;
try
{
Socket handler = s.EndAccept(iar);
StateObject state = new StateObject();
state.worksocket = handler;
handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallBack), state);
}
catch (Exception ex)
{
}
}上面是代码 客户端连接同时发送给客户端消息应该写在哪里 求指教
//当此方法执行的时候,说有个客户连接进来了,你可以用Socket s回复它。
public void AcceptConn1(IAsyncResult iar)
{
//Signal the main thread to conntinue
allDone.Set(); Socket s = (Socket)iar.AsyncState;
try
{
Socket handler = s.EndAccept(iar);
StateObject state = new StateObject();
state.worksocket = handler;
handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallBack), state);
}
catch (Exception ex)
{
}
}另外:你这代码哪里抄的BeginAccept()根本需要和while组合使用的while (true)
{
//Start Waiting
listener.BeginAccept(
new AsyncCallback(AcceptConn1),
listener);
}
那么在你的 Socket handler = s.EndAccept(iar) 代码之后,直接向handler执行send操作就行了。
中,可以将收到的数据入队,并使用HasRecvObj.BeginInvoke()方法发出异步通知,通知数据处理程序(注册该事件的程序)进行处理。