1,客户端给服务器发送文件的时候,如果客户端发的是1.TXT,服务器端如何在接收此文件之前就知道原始文件名1.TXT?是先发送文件名1.TXT,然后再发文件流吗?如果是这样,像QQ那样发送多个文件应该怎样处理?2,发送类或结构体,有没有发送方和接收方的代码借小弟参考一下?3,像QQ软件,多数时候收发消息都是点对点的,也就是A客户端直接发到B客户端,很少需要服务器中转,这种情况是怎样实现的?是每个客户端扮演两个角色,既是服务器又是客户端吗??
刚学SOKET,项目中已经实现了异步收发文本消息,但对项目以后的需求,也就是以上问题不是很了解,希望大鸟给予帮助
刚学SOKET,项目中已经实现了异步收发文本消息,但对项目以后的需求,也就是以上问题不是很了解,希望大鸟给予帮助
解决方案 »
- C# dataReceived事件多个串口接受数据问题
- asp.net网站与c#应用程序之间如何通讯?
- 微软的StringBuilder类是怎么写的,如果自己写一个同样的类StringBuilderTest该怎么写?
- C# SQL 省市联动 comboBox
- 三层架构中,为每个数据表写了一个单独的DAL类来操作,可是如果要同时操作两个数据表该怎么办?
- 向大家请教一个SQL语句
- c# event和delegate的应用?
- 如何获取焦点
- combox和panel的使用
- 请问Winform有没WebForm的GridView一样的模板功能?纠结一天,路过走过的也水下吧
- 三层架构反射vs微软通用类Common
- 求c#教程
2 发送类或结构体,有没有发送方和接收方的代码借小弟参考一下?
public struct SendFileByte
{
public string FileName; //文件名
public uint FileSize; //文件总大小
public byte[] Guid; //文件分成多个包使用
publci ushort PakcIndex; //包索引
public ushort PackSize; //数据大小
public ushort CRC16; //本包数据验效
public byte[] FileDate; //数据区
}
3 这个不好实现...要过NAT..
把所有你要传的文件名传过去,建好文件后,以流的方式写进文件中,其中,你要获得文件的大小,来判断文件是否传完,这个大小指一个文件的大小。在传输中,你最好要飞片传输,因为网络传输,是要一定的流量限制,默认为1024b.2,发送类或结构体,有没有发送方和接收方的代码借小弟参考一下?
这个你去网上找找吧。。建议:你可以将文件的大小,名称放到一个容器中,这样方便你使用。3,像QQ软件,多数时候收发消息都是点对点的,也就是A客户端直接发到B客户端,很少需要服务器中转,这种情况是怎样实现的?是每个客户端扮演两个角色,既是服务器又…点对点的发送,需要建立socket,分别侦听你要接收文件的那一方 。。如果有文件传来,那么你就接收,并做处理,如果扮演两者的话,两者都要建立socket ..分别侦听对方的端口。
QQ发送消息 好像是SOCKET UDP方式:和TCP套接字一样,UDP套接字也通过socket( )函数创建,不同的是UDP套接字可以通过一个套接字描述符在不同的主机之间发送和接收报文
第三个问题,其实我想问的是,用QQ即时通讯的时候,是不是多数时间每个人的QQ软件都在扮演着服务端和客户端的双重角色??再追加一个问题,是刚刚遇到的,一般断开SOKET连接,是由客户端断开还是由服务端断开?我想由客户端断开,为什么
socket.LinkObject.Shutdown(System.Net.Sockets.SocketShutdown.Both);
socket.LinkObject.Close();
socket.LinkObject.Disconnect(false);
这样都不行?
请告诉我客户端断开连接和服务器断开连接分别应该怎样做,多谢
1、其实不管什么消息,你都应该为其设计一个协议,告诉对方这个数据包的含义。2、QQ对话的时候用的是UDP协议,无所谓服务端和客户端的说法。3、socket.LinkObject.Shutdown(System.Net.Sockets.SocketShutdown.Both);
socket.LinkObject.Close();
socket.LinkObject.Disconnect(false); //这行是多余的,删掉。
在非正常断开连接尤其是物理设备上的时候,网络拥挤等情况心跳就有用了,tcp/ip我很少不用心跳包
在非正常断开连接尤其是物理设备上的时候,网络拥挤等情况心跳就有用了,tcp/ip我很少不用心跳包
1、可以这样想,具体的你可以去看看我的Blog:http://wzd24.cnblogs.com
2、是的,一般来说UDP通讯接收端会在收到信息后发送一个确认消息给发送端,如果发送端在指定的时间内没有收到确认消息的话,就重新发送信息。
3、这其实不是一个问题,两端都可以断开连接,需要哪端断开连接是看业务需求而决定的,而且断开代码都是一样的。