我以前写过类似的socket通信,虽然你用的方法和我的不太一样,但我还是感觉有一些问题 接受消息的时候,你用的是while(true)循环,当第一次将消息接受后,缓冲区就为空了,我想你再用循环去接收应该会出问题。 我记得有个poll方法,具体什么用途忘记了(很久没写代码了)你在循环里面加个if (clientsocket.Poll(1000, SelectMode.SelectRead))判断语句“clientsocket为你需要接收消息的socket”看看能不能解决,或者就用异步也可以,我可以发一下我以前的代码你参考下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms;
using System.Net; using System.Net.Sockets; using System.Threading;
namespace test4_2 { public partial class Form1 : Form { Socket connectSocket; //Socket client; byte[] bytes = new byte[1024]; delegate void listboxDel(string s); listboxDel listboxdel; public Form1() { InitializeComponent(); textBoxContent.Focus(); listboxdel = new listboxDel(listbox); //为连接指派线程 Thread threadConnect = new Thread(new ThreadStart(Connect)); threadConnect.Start();