string s1 = Encoding.ASCII.GetString(buf2);
我看到类型字符串只限制8个字节(8个字符)。每个人都可以告诉我如何接收超过8个字节? 详情:大小类型字符串
服务器
byte[] buf = Encoding.ASCII.GetBytes(fileSize.ToString());
MemoryStream ms = new MemoryStream();
ms.Write(buf,0,buf.Length);
ms.Seek(0, SeekOrigin.Begin);
byte[] buf2 = new byte[32*1024];
ms.Read(buf2,0,buf2.Length);
FileStream fs = File.OpenRead(savefilename);
MessageBox.Show("1 " + buf2.Length +" "+ fileSize+" "+ms.Length);
int ns = sendSocket.Send(buf2, sizeof(ulong), SocketFlags.None);
客户
byte[] buf = new byte[32 * 1024];
int nr = listenSocket2.Receive(buf, sizeof(ulong), SocketFlags.None);
MemoryStream ms = new MemoryStream();
ms.Write(buf, 0, buf.Length);
ms.Seek(0, SeekOrigin.Begin);
byte[] buf2 = new byte[32 * 1024];
ms.Read(buf2, 0, buf2.Length);
string s1 = Encoding.ASCII.GetString(buf2);
MessageBox.Show("" + s1+" "+ms.Length);
ulong fileSize = UInt64.Parse(s1);
S1不大于8个字符的
字符串数据类型可以容纳您需要的任何(合理)数量的字符。你有没有尝试使用更大的缓冲区? –
什么是buf2?你确定它是有效的ASCII数据吗? – shf301
@ p.s.w.g + shf301。我使用buf 32KB :(这行代码我在应用程序发送文件中使用。这是它:[link](https://www.mediafire.com/?qqbphpr3r2zbl92) –