首页 新闻 会员 周边

Sokcet通讯

0
悬赏园豆:50 [已解决问题] 解决于 2012-06-10 17:14

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);   也报错。

求解!!!!!

C#
朝八晚五的小程序员的主页 朝八晚五的小程序员 | 初学一级 | 园豆:9
提问于:2012-06-04 09:55
< >
分享
最佳答案
0

temp = s.Accept();
 接受到请求后,要开一个新的线程来处理这个连接请求。这样,LISTEN才能不断的侦听连接请求。

收获园豆:50
无之无 | 大侠五级 |园豆:5095 | 2012-06-05 14:23

能给一点代码吗?我对这些不是很熟悉。谢谢

朝八晚五的小程序员 | 园豆:9 (初学一级) | 2012-06-05 22:05

@朝八晚五的小程序员: 网上搜索下,有很多的。我这里就不写了。

你的这个写法并没问题,只是这样写的话,假如响应请求很长时间,就会阻塞下一个请求的应答。

(郁闷,手写了一段代码,不小心按了ESC。。。)

无之无 | 园豆:5095 (大侠五级) | 2012-06-06 08:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册