0
我在写一些双向套接字代码时遇到了一些麻烦。我连接到服务器这样的:c#从BeginConnect获取远程套接字
_clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_clientSocket.BeginConnect(new IPEndPoint(IPAddress.Parse("100.100.100.1"), 8677), new AsyncCallback(ConnectCallback), null);
_buffer = new byte[_clientSocket.ReceiveBufferSize];
然后在回调我这样做:
private void ConnectCallback(IAsyncResult AR)
{
_clientSocket.EndConnect(AR);
byte[] buffer = Encoding.ASCII.GetBytes("CONNECT");
_clientSocket.BeginSend(buffer, 0, buffer.Length, SocketFlags.None, new AsyncCallback(SendCallback), null);
}
我还需要从服务器接收数据,但我对如何尚不清楚在此过程中获取服务器的套接字。我编写了一些BeginReceive逻辑,但我一直在使用错误的套接字获取错误。
好像在我上面的代码中的某个地方我应该能够得到类似我如何做它在我的服务器的BeginAccept回调代码插座:
_serverSocket.BeginAccept(new AsyncCallback(AcceptCallback), _serverSocket);
然后在AcceptCallback:
Socket server = (Socket)AR.AsyncState;
Socket client = server.EndAccept(AR);
对我来说,我似乎很明显,我只是错过了一个步骤或概念让我过去。我做了无数次的搜索,但无论是寻找错误的东西,还是只是不在那里。
我将添加代码和错误 – ESDictor
你是100%正确的。我看到的错误实际上来自服务器,而不是客户端(带有使客户端看起来像客户端的复制/粘贴错误)..我将把它标记为答案,因为你所说的是100%正确的。 – ESDictor