日期:2014-05-17  浏览次数:20870 次

请教Socket,数据发送接收问题!
小弟最近在研究SOCKET,现在出现发现一个问题。
就是我需要在发送消息后等待消息接收,
比如说:我一个方法里面,要发送数据到一个客户端,同时需要接收到客户端的数据之后,才完成该方法,请问大树具体怎么实现,或者一些思路!谢谢!
socket?tcp

------解决方案--------------------
用同步接收和发送
------解决方案--------------------
在服务端,建立循环,触发式等待socket。
如果客户端连接,并发送数据到服务端,则单独开启线程,
处理客户端请求,并利用客户端的连接传送数据到客户端。
一段简单的代码:
 sockets = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPAddress hostIP = IPAddress.Parse(Dns.GetHostEntry(Dns.GetHostName()).AddressList[0].ToString());
            IPEndPoint ep = new IPEndPoint(0, 7788);

            sockets.Bind(ep); 
            sockets.Listen(10);
            textBox1.BeginInvoke(new MethodInvoker(delegate
            {
                textBox1.Text += "侦听启动\r\n";
            }));

            while (thread.ThreadState != ThreadState.Aborted)
            {
                Socket sReceive = sockets.Accept();
                textBox1.BeginInvoke(new MethodInvoker(delegate
                {
                    textBox1.Text += ((IPEndPoint)sReceive.RemoteEndPoint).Address.ToString() + " 连接\r\n";
                }));
                int bufLen = sReceive.ReceiveBufferSize;
                if (bufLen == 0) continue;
                byte[] bData = new byte[bufLen];
                int DataLen = sReceive.Receive(bData);
                if (DataLen == 0) continue;
                string StrData = Encoding.Default.GetString(bData, 0, DataLen);