【发布时间】:2018-08-28 01:09:45
【问题描述】:
我很难将BeginReceive. 放在哪里我是新手。有人可以帮我弄这个吗。每次我拨打_clientSocket.Close(); 时都会收到一条错误消息。
无法访问已处置的对象。对象名称: System.net.Sockets.Socket
您的建议将不胜感激。如有错误请指正谢谢!
我编辑了整个问题,因为我无法再次提问,我需要改进提问的方式。抱歉,我是这个页面的新手。
private void ReceiveData(IAsyncResult ar)
{
try
{
int received = _clientSocket.EndReceive(ar);
if (received == 0)
{
return;
}
Array.Resize(ref receivedBuf, received);
string text = Encoding.Default.GetString(receivedBuf);
if (text == "Server: -O")
{
Thread NT = new Thread(() =>
{
this.BeginInvoke((Action)delegate ()
{
textBox1.Text = "Guest";
this.Hide();
_clientSocket.Close();
Usertimer us = new Usertimer(textBox1.Text);
us.Show();
});
});
NT.Start();
}
Array.Resize(ref receivedBuf, _clientSocket.ReceiveBufferSize);
AppendtoTextBox(text);
_clientSocket.BeginReceive(receivedBuf, 0, receivedBuf.Length, SocketFlags.None, new AsyncCallback(ReceiveData), null);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
【问题讨论】:
-
你为什么在
Send_Click()中使用嵌套块? -
__ClientSockets变量是什么? -
那么,为什么你说“这是我的代码在服务器中”?
-
什么包含
txt_Text和什么rich_Text? (我猜第一个是System.Windows.Forms.TextBox,第二个是System.Text.StringBuilder,是吗?) -
因为您正在遍历套接字并将消息发送给所有套接字?这并不(根据您提供的代码)似乎取决于您的复选框的状态。
标签: c#