读书人

Socket接了一次数据后,不能再接了,咋回

发布时间: 2012-02-10 21:27:42 作者: rapoo

Socket接了一次数据后,不能再接了,怎么回事?50分再次求解!
服务端:
private void Form1_Load(object sender, EventArgs e)
{
thread = new Thread(new ThreadStart(get));
thread.Start();
}

private void get()
{
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipe = new IPEndPoint(IPAddress.Parse(getip()), 10);
socket.Bind(ipe);

isStart = true;
byte[] buff = new byte[1024];
while (isStart)
{
socket.Listen(10);
Socket conSocket = socket.Accept();


conSocket.Receive(buff);
string s = Encoding.Default.GetString(buff);
updateui(s); //在textbox显示
Thread.Sleep(200);
}
}

客户端:
private void button1_Click(object sender, EventArgs e)
{
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipe=new IPEndPoint(IPAddress.Parse( "192.168.0.3 "),10);
socket.Connect(ipe);
if (socket.Connected)
{
MessageBox.Show( "链接上了! ");
}
else
{


MessageBox.Show( "没有链接! ");
}
}

private void button2_Click(object sender, EventArgs e)
{
string s = this.richTextBox1.Text.Trim();
byte[] buff = Encoding.Default.GetBytes(s);
socket.Send(buff);
}

第一次点击发送后,正常,可以显示信息,
但第二次后就不能正常显示了,
我在updateui那设断点,
发现第二次点击后都不能执行到那,这是为什么啊?

怎么解决啊?大侠们帮忙啊!急!
分不够可以加!

[解决办法]
while (isStart)
{
socket.Listen(10);
Socket conSocket = socket.Accept();
conSocket.Receive(buff);
string s = Encoding.Default.GetString(buff);
updateui(s); //在textbox显示
Thread.Sleep(200);
}

我记得服务端的这块应该调整一下

socket.Listen(10);
Socket conSocket = socket.Accept();

似乎应该放到循环外边,否则第一次接受后的状态是等待连接,而不是等待接收

读书人网 >C#

热点推荐