读书人

关于Socket的有关问题高手速度来啊

发布时间: 2012-04-18 15:01:59 作者: rapoo

关于Socket的问题,高手速度来啊。。
以下是我的程序:

C# code
int port = int.Parse(this.textBox2.Text);string host = this.textBox1.Text;IPAddress ip = IPAddress.Parse(host);IPEndPoint ipe = new IPEndPoint(ip, port);s = new Socke(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);//创建一个Socket类 s.Bind(ipe);//绑定8901端口 s.Listen(0);//开始监听 Socket temp = s.Accept();while (1 == 1){    string recvStr = "";    byte[] recvBytes = new byte[10240];    int bytes = 10240;    bytes = temp.Receive(recvBytes, recvBytes.Length, 0);//从客户端接受信息     recvStr += Encoding.Unicode.GetString(recvBytes, 0, bytes);    string a = UNcode.strtohex(recvStr.ToString());    if (a != "")    {        FileStream file = new FileStream("log.txt", FileMode.Append);        StreamWriter sw = new StreamWriter(file);        sw.Write(DateTime.Now.ToString() + "  日志记录信息:" + "  " + a + "\n");        sw.Close();        file.Close();    }                   // DetailTPosition.DetailTPositions(a);}s.Close();


就是想把从Socket接收到的所有信息存进log.txt文本文档里面,但是总会出现接收几条信息后,,,程序就会一直recvStr为空循环,按道理说程序应该停在bytes = temp.Receive(recvBytes, recvBytes.Length, 0);这句才对的啊。。。应该是收到信息在进行循环吧,,,,在这里请求各位高手帮忙。。。3Q!

[解决办法]
temp.Receive

是同步方法,也就是说,如果没有数据的话,他不是阻塞,而是继续往下执行的
[解决办法]
最好用线程

读书人网 >C#

热点推荐