我正在想一个程序 测试成功(我在发送之前我知道大小和格式才可以的) 现在面临问题是 在不知收到文件大小怎么来获取接受文件大小。我接受文件的方法如下private void AcceptMessage()
{
//d定义socket对象
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 8899);
socket.Bind(iep);
ep = (EndPoint)iep;
bytes = new byte[49153]; //怎么判断受到文件的大小 49153是我发送图片大小 在发送之前 我查看属性
while (true)
{
socket.ReceiveFrom(bytes, ref ep);
receiveData ="";
receiveData = System.Text.Encoding.Unicode.GetString(bytes);
receiveData = receiveData.TrimEnd('\u0000');
Thread th = new Thread(new ThreadStart(Acc));
th.Start();
}
socket.Close();
}
bytes = new byte[49153]; 就是这里不会写 怎么获取要接受文件的大小 还有怎么获取接受文件的格式
高手帮个帮 我实在不知道怎么弄,感谢万分。回复 定给分
{
//d定义socket对象
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 8899);
socket.Bind(iep);
ep = (EndPoint)iep;
bytes = new byte[49153]; //怎么判断受到文件的大小 49153是我发送图片大小 在发送之前 我查看属性
while (true)
{
socket.ReceiveFrom(bytes, ref ep);
receiveData ="";
receiveData = System.Text.Encoding.Unicode.GetString(bytes);
receiveData = receiveData.TrimEnd('\u0000');
Thread th = new Thread(new ThreadStart(Acc));
th.Start();
}
socket.Close();
}
bytes = new byte[49153]; 就是这里不会写 怎么获取要接受文件的大小 还有怎么获取接受文件的格式
高手帮个帮 我实在不知道怎么弄,感谢万分。回复 定给分
发送和接受如果都是自己写的程序,发送方最好把文件格式直接发给接受方.接收方可以判断EOF来确认是否已经把文件收完,但不可靠.
int recv=receivefrom()
这样行吗?
通信协议是双方定的
你可以要求客户机把通信规约制定成这种格式:
数据大小(4字节)+格式(20字节)+文件
在服务器端先读取前4字节
recvfrom(data,4,ref)
然后转byte为int
得到大小
在recvfrom(data,20,ref)
得到格式,处理
在recvfrom(data,size-24,ref)