做了一个socket(服务端和客户端开发时都是在WIN2003下) C# .NET2.0
向客户端发送数据时,在VISTA系统中运行就出错
测试了下在XP和2003中运行都没有出错,发送内容一样
比如发送一个字符串,11$123465$456456.在客户端接收时split('$')只能取到11 123465后面的都取不到了
还有问题下在用SOCKET发送长字符串的最好方法是什么?
小弟新手,刚接触SOCKET还请高手多赐教
向客户端发送数据时,在VISTA系统中运行就出错
测试了下在XP和2003中运行都没有出错,发送内容一样
比如发送一个字符串,11$123465$456456.在客户端接收时split('$')只能取到11 123465后面的都取不到了
还有问题下在用SOCKET发送长字符串的最好方法是什么?
小弟新手,刚接触SOCKET还请高手多赐教
发送一个ABC,再发送一个DEF
你不能够认为接收一定是收到了一个ABC,然后再收到一个DEF
很有可能是先收到AB,然后再收到CDEF,也可能是收到ABCD然后再收到EF,也可能是一次就收到ABCDEF...
GetData的第三个参数maxlen,如果它的值小于DataArrival 当中totalBytes 参数值,会把多余的数据丢弃,所以接收的时候最好是按vbByte + vbArray来接收,并且尽可能把totalBytes 全接收完,对于未处理的部分数据缓存下来.
其实我曾经有回过一份贴子,说得是比较清楚的,但是暂时没有找到相关链接.
string recvStr = string.Empty;
if (clientsocket.Client.Available <= 0)
{
return recvStr;
}
int bytes;
byte[] recvBytes = new byte[1024000];
while (clientsocket.Client.Available > 0)
{
bytes = clientsocket.Client.Receive(recvBytes, recvBytes.Length, 0);//从服务器端接受返回信息
recvStr += Encoding.GetEncoding("GB2312").GetString(recvBytes, 0, bytes);
}不知道我这样写会不会有问题??