【发布时间】:2014-07-21 15:12:44
【问题描述】:
我在c#中通过socket发送对象时遇到问题,我的客户端可以发送到服务器但服务器不能发送到客户端,我认为客户端有问题。
服务器
private void Form1_Load(object sender, EventArgs e)
{
CheckForIllegalCrossThreadCalls = false;
Thread a = new Thread(connect);
a.Start();
}
private void sendButton_Click(object sender, EventArgs e)
{
client.Send(SerializeData(ShapeList[ShapeList.Count - 1]));
}
void connect()
{
try
{
server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5555);
server.Bind(iep);
server.Listen(10);
client = server.Accept();
while (true)
{
byte[] data = new byte[1024];
client.Receive(data);
PaintObject a = (PaintObject)DeserializeData(data);
ShapeList.Add(a);
Invalidate();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
客户
private void Form1_Load(object sender, EventArgs e)
{
CheckForIllegalCrossThreadCalls = false;
Thread a = new Thread(connect);
a.Start();
}
private void SendButton_Click(object sender, EventArgs e)
{
client.Send(SerializeData(ShapeList[ShapeList.Count - 1]));
}
void connect()
{
try
{
client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
iep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 5555);
client.Connect(iep);
while (true)
{
byte[] data = new byte[1024];
client.Receive(data);
PaintObject a = (PaintObject)DeserializeData(data);
ShapeList.Add(a);
Invalidate();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
【问题讨论】:
-
什么是“服务器无法发送到客户端”?发生什么了?另请参阅Why does my client socket not receive what my server socket sends?。
-
是的,我的项目是画一个像线一样的形状,然后通过套接字发送,客户端可以将形状发送到服务器,但我不能将形状从服务器发送到客户端,我也看了你的链接,但我不太明白,你能更清楚地告诉我吗?
-
“无法将形状从服务器发送到客户端”是什么意思?发生什么了?你有例外吗?我提供的链接提到您的
client.Receive(data);不一定会收到您的服务器发送的所有数据。