socket接发数据的多线程问题
IPAddress SIP = IPAddress.Parse(txtIP.Text.Trim());
int SPort = Convert.ToInt32(txtPort.Text.Trim());
IPEndPoint iep = new IPEndPoint(SIP, SPort);
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(iep);
btnListen.Enabled = false;
btnClose.Enabled = true;
btnSend.Enabled = true;
toolStrip1.Items[0].Text = string.Format( "连接{0}:{1}成功... ",txtIP.Text,txtPort.Text);
timer1.Start();//timer的tick如下
private void timer1_Tick(object sender, EventArgs e)
{
string recMsg = socket.Receive(byteMessage, SocketFlags.None).ToString();
string str = Encoding.ASCII.GetString(byteMessage);
string tmp = byteMessage[0].ToString();
txtDataFlow.AppendText(tmp);
receiveMsg = receiveMsg + str;
txtMsg.AppendText(str);
}
采用socket连接主机,上面的代码能接收到数据,有2个问题:
1 当主机发出数据后,客户端开始接受,接受完后,客户端就像死机了一样,主机再次发送数据后,又能正常接收,循环...加入多线程后,不会有“死机”现像,但接不到数据了...帮帮忙...
2 上面的写法,有没有算法,可以一次性将接收到数据换成字符串,不要一个字母一个字母的接收,就是如何将byte一次接受后,转换string.
------解决方案--------------------你的代码???
还是去看看我的BLOG吧:wzd24.cnblogs.com
------解决方案--------------------关注,帮顶了............
------解决方案--------------------路过,不懂,只能帮你顶一下了
------解决方案--------------------SF
------解决方案--------------------