关于C#编写socket网络传输文件遇到的连接的问题

由于我初次编写网络传输这一块的代码,中间一些传输上这几道连接的地方不太明白。现在我遇到的情景是这样的:1.我用TCP协议传输文件至服务器,2.客户端第一次发送文件信息等待... 由于我初次编写网络传输这一块的代码,中间一些传输上这几道连接的地方不太明白。
现在我遇到的情景是这样的:
1.我用TCP协议传输文件至服务器,
2.客户端第一次发送文件信息等待回应,
3.服务器接收到消息后返回状态,
4.本地收到状态后开始传文件并等待传输完成回应,
5.传输完成后服务器发送完成状态回来客户端接收到整个过程就完成了。
现有服务器一台,公网IP,可以直接从任何电脑访问的那种,
我现在在服务器上写好了监听,监听收到的消息并判断,然后发送状态返回。
按我的理解就是要发送到对方的IP和端口上去就可以了(当然对方也要开启监听)
但是我的客户端网络很有可能不是公网IP(基本都不是),这样又要经过NAT这一层了,
客户端发送的消息服务器是已经收得到了,但是现在服务器怎么让客户端收到状态回应呢?
我选择的是让服务器把消息发送给RemoteEndPoint,那么客户端应该监听那个IP呢?

我现在的问题是服务器收到了客户端发送的请求,现在他要发送一个请求回去,客户端能找到服务器是因为服务器有公网ip,但是客户端会经过nat进行一次映射,而服务器返回信息只能返回到映射的地址。现在我的程序抛出异常时返回的时候nat那个地址没有做出正常回应或没有响应。
展开
 我来答
lc316546079
2015-01-16 · TA获得超过273个赞
知道小有建树答主
回答量:682
采纳率:0%
帮助的人:327万
展开全部
..................................................
客户端 发送 连接请求连接服务器, 服务器侦听.........连接建立成功后,就不需要再连接了,这就是tcp的优点...你服务器根本不需要管客户端是谁.......你先坐吧,做好连接这块自然就明白了
更多追问追答
追问
服务器怎么返回消息呢?
追答

我晕,你都还没开始弄吧.....

服务器侦听到客户端的请求,建立连接返回给你一个Socket 然后就可以直接用这个Socket 来发送接收数据了:

Socket listenSocket;            // listenSocket 是用来侦听客户端请求具体设置,自己百度

// 设置listenSocket代码省略

Socket client=listenSocket.Accept() // 获取客户端请求返回 一个客户端连接,此时的client可以任你使用

byte[] data=new byte[1024];
client.Send(data,data.Length,SocketFlags.None);// 发送信息
client.Receive(data); // 接收

只是写这么个样子,具体逻辑自己弄

....

你也真是在搞笑哦,都没弄清网络编程的技术实现,就在这里瞎考虑服务器客户端的逻辑......

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式