为什么我的C#连接了一次后就怎么也连接不上?代码如下:
public class Receive
{
public byte[] buffer = new byte[1024]; public ManualResetEvent socketEvent = new ManualResetEvent(false);
public Socket sListener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
public Socket handler = null; public void receive()
{
try
{
byte[] bytes = new byte[1024]; IPAddress ipAddr = IPAddress.Parse("192.168.2.100");
int Port = 10023; IPEndPoint EPServer = new IPEndPoint(ipAddr, Port);
sListener.Bind(EPServer);
sListener.Listen(10); while (true)
{
if (handler == null)
{
sListener.BeginAccept(new AsyncCallback(AcceptCallback), sListener);
socketEvent.WaitOne();
handler.BeginReceive(buffer, 0, buffer.Length, 0, new AsyncCallback(ReceiveCallback), handler);
socketEvent.WaitOne();
}
else
{
socketEvent.Reset();
handler.BeginReceive(buffer, 0, buffer.Length, 0, new AsyncCallback(ReceiveCallback), handler);
socketEvent.WaitOne();
}
}
}
catch (Exception e)
{
;
}
}
public void AcceptCallback(IAsyncResult ar)
{
try
{
Socket listener = (Socket)ar.AsyncState;
handler = listener.EndAccept(ar);
handler.BeginReceive(buffer, 0, buffer.Length, 0, new AsyncCallback(ReceiveCallback), handler);
}
catch (Exception e)
{
;
}
}
public void ReceiveCallback(IAsyncResult ar)
{
try
{ string content = String.Empty;
handler = (Socket)ar.AsyncState; int bytesRead = handler.EndReceive(ar);
UnicodeEncoding ue = new UnicodeEncoding();
content += ue.GetString(buffer); D160A.Receive.writeQDLog("socket", content); if (content.LastIndexOf('|') > -1)
{
D160ALib.queuePhone qphone = new D160ALib.queuePhone();
qphone.queueSocket = handler; qphone.queueString = content;
D160A.Form1.qp.Add(qphone);
}
}
catch (Exception e)
{
sListener.BeginAccept(new AsyncCallback(AcceptCallback), sListener);
}
}
}
public class Receive
{
public byte[] buffer = new byte[1024]; public ManualResetEvent socketEvent = new ManualResetEvent(false);
public Socket sListener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
public Socket handler = null; public void receive()
{
try
{
byte[] bytes = new byte[1024]; IPAddress ipAddr = IPAddress.Parse("192.168.2.100");
int Port = 10023; IPEndPoint EPServer = new IPEndPoint(ipAddr, Port);
sListener.Bind(EPServer);
sListener.Listen(10); while (true)
{
if (handler == null)
{
sListener.BeginAccept(new AsyncCallback(AcceptCallback), sListener);
socketEvent.WaitOne();
handler.BeginReceive(buffer, 0, buffer.Length, 0, new AsyncCallback(ReceiveCallback), handler);
socketEvent.WaitOne();
}
else
{
socketEvent.Reset();
handler.BeginReceive(buffer, 0, buffer.Length, 0, new AsyncCallback(ReceiveCallback), handler);
socketEvent.WaitOne();
}
}
}
catch (Exception e)
{
;
}
}
public void AcceptCallback(IAsyncResult ar)
{
try
{
Socket listener = (Socket)ar.AsyncState;
handler = listener.EndAccept(ar);
handler.BeginReceive(buffer, 0, buffer.Length, 0, new AsyncCallback(ReceiveCallback), handler);
}
catch (Exception e)
{
;
}
}
public void ReceiveCallback(IAsyncResult ar)
{
try
{ string content = String.Empty;
handler = (Socket)ar.AsyncState; int bytesRead = handler.EndReceive(ar);
UnicodeEncoding ue = new UnicodeEncoding();
content += ue.GetString(buffer); D160A.Receive.writeQDLog("socket", content); if (content.LastIndexOf('|') > -1)
{
D160ALib.queuePhone qphone = new D160ALib.queuePhone();
qphone.queueSocket = handler; qphone.queueString = content;
D160A.Form1.qp.Add(qphone);
}
}
catch (Exception e)
{
sListener.BeginAccept(new AsyncCallback(AcceptCallback), sListener);
}
}
}
sListener.BeginAccept(new AsyncCallback(AcceptCallback), sListener);
不要这样,跟它没关系
我把socketEvent.WaitOne();去掉了
在ReceiveCallback里面也把连接关掉了,但是情况还是一样啊