日期:2014-05-18  浏览次数:20773 次

socket发送数据时,报错“您的主机中的软件放弃了一个已建立的连接”
我的代码:
C# code

Byte[] by=new Byte[4194304];//4M
int port = 7200;
string host = "192.168.26.167";
IPAddress ip = IPAddress.Parse(host);
IPEndPoint ipe = new IPEndPoint(ip, port);
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
s.Connect(ipe);
s.Send(by, by.Length, 0);//成功发送
s.Send(by, by.Length, 0);//不成功发送,会报错“您的主机中的软件放弃了一个已建立的连接”


请问各位高手,我向服务器每次都是发送4M大小的数据包,只能成功第一次,然后就报错,如上,为什么?
先谢谢了!!

------解决方案--------------------
你看看服务器的socket是不是在接受好数据后,就关闭了传送数据的那个连接,这样你第二次就要重新连接过去后,再传送数据:
C# code

s.Connect(ipe);
s.Send(by, by.Length, 0);//成功发送

s.Connect(ipe);
s.Send(by, by.Length, 0);//不成功发送,会报错“您的主机中的软件放弃了一个已建立的连接”

------解决方案--------------------
探讨
你看看服务器的socket是不是在接受好数据后,就关闭了传送数据的那个连接,这样你第二次就要重新连接过去后,再传送数据:

C# code

s.Connect(ipe);
s.Send(by, by.Length, 0);//成功发送

s.Connect(ipe);
s.Send(by, by.Length, 0);//不成功发送,会报错“您的主机中的软件放弃了一个已建立的连接……

------解决方案--------------------
你服务端代码没贴出来,是由于你服务端关闭了连接.
------解决方案--------------------
是服务器端的问题,同意楼上
你的程序没问题
你发送4m的数据,电脑受的了吗