废话不多说,我直接贴代码了。程序很简单。我摘抄的网上的。
上图是个界面。
然后程序里先是一个类。如下:
class ClientThread
{
Encoding encoding = Encoding.GetEncoding("GB2312");
private Socket client;
public string data = null;
private byte[] receiveBytes = new byte[1024];
private int recCount;
public ClientThread(Socket ClientSocket)
{
this.client = ClientSocket;
}
public void ClientServer()
{
string ip;
try
{
while (true)
{
recCount = client.Receive(receiveBytes, receiveBytes.Length, 0);
ip = client.RemoteEndPoint.ToString();
byte[] clientIP = Encoding.Default.GetBytes(ip);
if (recCount != 0)
{
data = encoding.GetString(receiveBytes, 0, recCount);
client.Send(encoding.GetBytes("OK"), 2, 0);
}
else
{
break;
}
}
}
catch (Exception ex)
{
MessageBox.Show("出现异常:" + ex.ToString());
}
}
}
接下来就是开个线程了。
private void button1_Click(object sender, EventArgs e)
{
newsocket.Bind(ipep);
newsocket.Listen(10);
while (true)
{
Socket client = newsocket.Accept();
newclient = new ClientThread(client);
Thread newthread = new Thread(new ThreadStart(newclient.ClientServer));
newthread.Start();
}
}
现在我想 在界面里的textbox1.text 中显示线程中接收的数据。但是我现在调了好久没弄出来,我不知道哪里有问题。我是个新手,希望大神指点一二,谢谢了。
data = encoding.GetString(receiveBytes, 0, recCount);
this.Invoke(new Action(() => { textBox1.Text = data; }));