请教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);
textBox1.BeginInvoke(new MethodInvoker(delegate
{
textBox1.Text += ((IPEndPoint)sReceive.RemoteEndPoint).Address.ToString() + ":" +StrData + "\r\n";
}));
}
sockets.Close();
sockets = null;