读书人

socket匪夷所思啊 生手求指教

发布时间: 2014-06-02 16:16:30 作者: rapoo

socket匪夷所思啊 新手求指教
客户端 send第一次 比如send个用户名
客户端再send第二次 send个密码

服务端 receive第一次
receive第二次
服务端第一次接收到的一定是客户端第一次send的内容么 即用户名

难道不会receive一下 把客户端俩次send的内容 即把用户名和密码都给接收完了?
这是客户端的代码

C# code
// 给服务器发送要传送的文件名
byte[] filenameByte = new byte[256];
filenameByte = Encoding.Default.GetBytes(fileName);


netStream.Write(filenameByte, 0, filenameByte.Length);
netStream.Flush();
// 给服务器传送需要文件发送的次数
//netStream.Write(Encoding.Unicode.GetBytes(times_tobesended.ToString()), 0, Encoding.Unicode.GetBytes(times_tobesended.ToString()).Length);
// 给服务器发送总的文件大小
byte[] tempb = Encoding.Default.GetBytes(fileSize.ToString());

netStream.Write(Encoding.Default.GetBytes(fileSize.ToString()), 0, Encoding.Default.GetBytes(fileSize.ToString()).Length);
netStream.Flush();

这是服务器端接收的代码


C# code

byte[] fileBuffer = new byte[fileBuffer_eachTime_sended];
byte[] fileNameBuffer = new byte[256];
// 接收文件名


clientSocket.Receive(fileNameBuffer);
string fileName = Encoding.Default.GetString(fileNameBuffer).TrimEnd('\0');
//// 接收要传送的次数
//byte[] times_byte = new byte[8];
//clientSocket.Receive(times_byte);
//string temp = Encoding.Default.GetString(times_byte).TrimEnd('\0');
//int number_of_receive = int.Parse(temp);
// 接收总的文件大小
byte[] fileSize_byte = new byte[16];
clientSocket.Receive(fileSize_byte);
string fileSize_string = Encoding.Default.GetString(fileSize_byte).TrimEnd('\0');


long sumFileSize = Convert.ToInt32(fileSize_string, 10);

最后一行会报错
而且string fileName = Encoding.Default.GetString(fileNameBuffer).TrimEnd('\0');
filename的取到的值为"示例图片_02.jpg123777

读书人网 >C#

热点推荐