求大神帮忙!C#的服务器端聊天错误:由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。

zwphumor 2012-04-15 10:24:16
由于刚学Socket,本来是用C#写的服务器端与java写的客户端进行聊天,服务器端能收到消息但是不能发出消息,提示:由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,发送或接收数据的请求没有被接受。我提了一些主要的代码出来,请大家帮忙看看~
private void Chat_Load(object sender, EventArgs e)
{
serverHost = new IPEndPoint(IPAddress.Parse(this.IP), this.port);
serverSocket.Bind(serverHost);
this.textBox_Recieved.AppendText("Chat Ready...\n");

receiveThread = new Thread(new ThreadStart(DataRec));

receiveThread.Start();
}
private void DataRec()
{
serverSocket.Listen(0);
newSocket = serverSocket.Accept();


while (true)
{
byte[] buff = new byte[256];
List<byte> list = new List<byte>();
int length;

while ((length = newSocket.Receive(buff)) != 0)
{
for (int i = 0; i < length; i++)
{
list.Add(buff[i]);
}

receiveText = System.Text.Encoding.Default.GetString(list.ToArray());
list.RemoveRange(0, length);


this.recText = receiveText;
try
{
RecDele = new DeleRec(this.AppendText);
this.textBox_Recieved.Invoke(RecDele);
}
catch { }
}

}

}
private void btn_Send_Click(object sender, EventArgs e)
{
this.sendText = this.textBox_Send.Text.Trim();
serverSocket.Send(System.Text.Encoding.ASCII.GetBytes(this.sendText));
//sendThread = new Thread(new ThreadStart(this.send));
//sendThread.Start();
this.textBox_Recieved.AppendText("Server:" + this.textBox_Send.Text.ToString() + '\n');

}
...全文
1446 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shanminmin 2012-04-16
  • 打赏
  • 举报
回复
代码里面只调用了Send,没有看到调用SendTo啊。再说,SendTo是用于UDP的吧
orochiheart 2012-04-16
  • 打赏
  • 举报
回复
记得过去报过这个错误,貌似是服务器和客户端开启的先后顺序有关,
当时的解决办法是关闭掉之前开启的所有进程(或重启电脑),然后先开启服务器端,后开启客户端。就可以了。
kesenl 2012-04-16
  • 打赏
  • 举报
回复
if (!serverSocket.Connected)
serverSocket.BeginConnect(server, port, new AsyncCallback(ConnectCallback), null);
zwphumor 2012-04-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
记得过去报过这个错误,貌似是服务器和客户端开启的先后顺序有关,
当时的解决办法是关闭掉之前开启的所有进程(或重启电脑),然后先开启服务器端,后开启客户端。就可以了。
[/Quote]
还是不行,总是提示这个错误,代码写的有问题么?
zwphumor 2012-04-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
代码里面只调用了Send,没有看到调用SendTo啊。再说,SendTo是用于UDP的吧
[/Quote]
那应该呢?

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧