C# TCP网络编程,文件上传完之后如何让服务端通知客户端已经收到。
主要是TCP在服务端和客户端通讯未中断前,如何做让服务端发送消息给客户端?
大文件上传我已经用分包循环发送。但是这个发送消息实在是没弄明白原理,请大家帮忙帮忙指点一下!
..............................................以下是我手动打上来的字..如果错了..自行脑补.TCP/IP协议:我给您贴一段百度百科的话
Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台电脑规定一个地址。
TCP/IP通常被人誉为:双向连接协议,传输木有UDP快.如果说你不知道如何使用.就基本等于.你没有理解.:双向连接协议你把TCP/IP当作TCP或者UDP使用了..就算是TCP也有一个上传失败的说法(UDP完全木有...)..那么..嗯?呵呵..不掉你胃口了...说正事...唉今天属下请假好多..无聊滴...
来..咱们看看通信的代码...
TcpClient tcp = new TcpClient();//我就不给你使用SOCKET连接了..怕太深你不明白楼~~~
tcp.Client.Send(new byte[] { });//在这里发送吧?对吧~
TcpListener tcpl = new TcpListener(1234);
tcpl.AcceptSocket();//这里就能获取到一个客户连接了对吧?
OKOK
那么还不简单?tcp.Client.Send(newbyte[] { });//在这里发送吧?对吧~这句上传文件
tcpl.AcceptSocket();//这里就能获取到一个客户连接了对吧?
这里换个思路
Socket clientSocket = tcpl.AcceptSocket();//这里就能获取到一个客户连接了对吧?
clientSocket.Send(new byte[] { });//这里就是服务器给客户端发消息了
OKOK
那么客户端怎么接收?
..这个..我不想你告诉我你的客户端是同步上传而不是异步..如果你知道什么是异步
异步接收异步发送解决
tcp.Client.ReceiveAsync(new SocketAsyncEventArgs());//异步接收
tcp.Client.SendAsync(new SocketAsyncEventArgs());//异步发送..
再不知道?..嗯..我也不知道怎么给你说了
TCP协议发送和接受是互相不影响的。你把你的分包和发送代码贴上来,我用看NBA的间隙帮你看看~