请教Socket,数据发送接收问题! socket tcp 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在服务端,建立循环,触发式等待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;Socket sReceive = sockets.Accept();这个表示有客户端连接,到这一步,应该建立一个新线程类,把sReceive传到线程中,做数据接收,以及给客户端数据的回传。上述代码的完整工程地址:http://download.csdn.net/detail/mjp1234airen4385/2897578 Begin-End方法对,在发送方的EndReceive方法的AsyncCallback回调中解析回复,不用纠结线程 asp.net 导出word代码问题 富文本框中记录新插入的文字 如何让Microsoft ReportViewer不经过显示预览而直接导出Excel?? 关于登录时弹窗与弹层之我见,拍砖的进来。 如何将窗体上的图像存入变量 大家用过ComponentOne Studio Enterprise这套控件吗? 大哥们!我想学习 ASP.net 推荐一下学习资料吧!!! 如何更改数据窗体向导生成的datagrip的列名 求一个函数返回一个整数? 请问怎么调用浏览器打开文件 C#能不能进行流的转接? C#和SQL开发的软件,如何打包可以在不安装SQL的电脑上使用
如果客户端连接,并发送数据到服务端,则单独开启线程,
处理客户端请求,并利用客户端的连接传送数据到客户端。
一段简单的代码:
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;Socket sReceive = sockets.Accept();这个表示有客户端连接,到这一步,应该建立一个新线程类,把sReceive传到线程中,做数据接收,以及给客户端数据的回传。
上述代码的完整工程地址:
http://download.csdn.net/detail/mjp1234airen4385/2897578