关于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
是同步方法,也就是说,如果没有数据的话,他不是阻塞,而是继续往下执行的
[解决办法]
最好用线程