1.初始化服务端
IPAddress ip = IPAddress.Parse(MyIp);
IPEndPoint ipe = new IPEndPoint(ip, port);
s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
s.Bind(ipe);
s.Listen(1);
2.初始化客户端
IPAddress ip = IPAddress.Parse(ServerIP);
IPEndPoint ipe = new IPEndPoint(ip, port);
c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
c.Connect(ipe);
3.向服务器发信息 :c.Send(bs, bs.Length, 0);
4.服务器接收:
temp = s.Accept();
rtbServerGet.AppendText("Connect Scuccess"+"\r\n");
string recvStr = "";
byte[] recvBy = new byte[1024];
int bytes=0;
bool bo = temp.Poll(300, SelectMode.SelectRead);
if (bo == true)
{
bytes = temp.Receive(recvBy, recvBy.Length, 0);
if (bytes > 0)
recvStr += Encoding.ASCII.GetString(recvBy, 0, bytes);
if (recvStr.Length > 0)
rtbServerGet.AppendText("Get Data:" + recvStr + "\r\n");
}
temp :Socket temp; //服务器使用的 临时Socket
第二次 接收 就卡死,为什么?
服务器发送数据:temp.Send(bs); 也报错。
求解!!!!!
temp = s.Accept();
接受到请求后,要开一个新的线程来处理这个连接请求。这样,LISTEN才能不断的侦听连接请求。
能给一点代码吗?我对这些不是很熟悉。谢谢
@朝八晚五的小程序员: 网上搜索下,有很多的。我这里就不写了。
你的这个写法并没问题,只是这样写的话,假如响应请求很长时间,就会阻塞下一个请求的应答。
(郁闷,手写了一段代码,不小心按了ESC。。。)