服务端与客户端相互通信的问题。。。。。。

sinat_29437461 2015-08-06 11:03:20
本人初学C#,所以有很多东西还不太明白, 最近在做一个自己的项目,遇到一些问题,所以要求助于各位!谢谢

服务端在一台内网电脑上,通过在路由器上映射端口实现访问。服务器连接有摄像头。

客户端在其他内网电脑上。


功能:

客户端通过TCP与服务端连接,然后客户端可以向服务端发送一些指令,比如打开服务器中的指定文件,然后服务器返回一条数据确定是否打开成功。

客户端通过指定指令,让服务端向客户端发送摄像头画面,通过UDP形式发送。客户端接收后显示画面。

服务端通过一个线程监听端口,如果有新的连接则新建一个socket与之连接。

客户端每隔一段时间发送一个心跳包。

问题:

1,如何新建一个socket与之连接。

2,如何创建一个用户列表,让每个用户的IP、端口、发来的心跳包一一对应。

3,如何判断长时间没接收到心跳包,然后关闭相应的连接,关闭UDP的发送。(一对一连接的时候,我是用一个两个timer,一个修改一个布尔值,一个判断布尔值,然后用户的心跳包用来修改布尔值,但多个用户连接,这样显然不行吧)


大家可以不用贴代码,可以只告诉我需要实现上面的功能都要学习什么?或是有什么好的教程教材啥的。然后我可以比较有针对性的学习一下。谢谢各位了!!

...全文
193 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
_lee_chong 2015-08-07
  • 打赏
  • 举报
回复
引用 6 楼 sinat_29437461 的回复:
[quote=引用 2 楼 lc316546079 的回复:] 1,创建socket的代码,你都说了你一对一的时候怎么处理的了,那就没问题 2,3 简单点处理的话, 服务器端: 定义一个class user里面有你需要的变量,在你项目中你认为合适的地方定义list<user>变量咯; 一个客户端请求到了,创建其用户信息,加入到list中,创建一条线程,在线程中去维护对应的user信息,及功能逻辑
说的好像很有道理~~ 这部分都要学哪些知识呢? 定义一个类还是会的,但是不是还要牵扯到很多泛型的知识?[/quote] 泛型?关泛型什么事。。。泛型是跟“设计”相关的特性,不是必要的代码实现; 你初学的话,就不要讲究那么多,就用最简单的先实现; 第一步先实现,一对一的通信,然后再在服务器加上多线程来控制;具体的你先写代码再说,一边写一边思考,不要妄想一开始还没写代码就把所有的东西搞明白了,简单的通信部是太复杂的东西,等你在实现过程中有了疑问再问别人; 服务器侦听; 客户端请求连接; 服务器收到请求,建立连接; c/s之间互相通信; 服务器多线程; 总结下来技术上就这几个点,你先一个点一个点去实现吧,也可以去参考一些现成的源代码,不过我个人的建议是,先自己差资料从技术上实现了简单的功能,再参考源代码看别人的实现方式,这样更有效
等待的风帆 2015-08-06
  • 打赏
  • 举报
回复
引用 3 楼 Z65443344 的回复:
1,如何新建一个socket与之连接。 建议搜点示例代码,建立socket侦听其实总共也不足100行代码,很简单的 问题是从你的问题就能看出,你是没有一点基础,仅仅是从网上看到了一些名词 只有你先动手做起来,有了具体的问题再问,才有意义 否则泛泛的讲,那么你满脑子里还是只有一些名词
正解 ,我以前也沒有接觸過這些,最近寫的TCP、socket通信,以及串口通信,都是一邊學,一邊寫代碼,收穫很大
於黾 2015-08-06
  • 打赏
  • 举报
回复
1,如何新建一个socket与之连接。 建议搜点示例代码,建立socket侦听其实总共也不足100行代码,很简单的 问题是从你的问题就能看出,你是没有一点基础,仅仅是从网上看到了一些名词 只有你先动手做起来,有了具体的问题再问,才有意义 否则泛泛的讲,那么你满脑子里还是只有一些名词
_lee_chong 2015-08-06
  • 打赏
  • 举报
回复
1,创建socket的代码,你都说了你一对一的时候怎么处理的了,那就没问题 2,3 简单点处理的话, 服务器端: 定义一个class user里面有你需要的变量,在你项目中你认为合适的地方定义list<user>变量咯; 一个客户端请求到了,创建其用户信息,加入到list中,创建一条线程,在线程中去维护对应的user信息,及功能逻辑
Poopaye 2015-08-06
  • 打赏
  • 举报
回复
建议你直接看msdn上,TcpClient, TcpListener, UdpClient的例子就行了 System.Net.Sockets
sinat_29437461 2015-08-06
  • 打赏
  • 举报
回复
引用 5 楼 taogehujie 的回复:
加油,我也是新手,我项目快做完了可是我感觉我还是啥都不懂,哈哈,你首先先建立 服务器跟客户的的连接吧,实现通信再说。
你对于我来说肯定是老手了,毕竟我还没做过项目,而且我才刚学C# 三个周左右,而且我的职业是一名苦逼的美术~~ 学编程纯粹是出于兴趣~一起加油吧~
sinat_29437461 2015-08-06
  • 打赏
  • 举报
回复
引用 3 楼 Z65443344 的回复:
1,如何新建一个socket与之连接。 建议搜点示例代码,建立socket侦听其实总共也不足100行代码,很简单的 问题是从你的问题就能看出,你是没有一点基础,仅仅是从网上看到了一些名词 只有你先动手做起来,有了具体的问题再问,才有意义 否则泛泛的讲,那么你满脑子里还是只有一些名词
恩~ 下载过很多例子~ 也一直在研究别人的方法。。。一些简单的东西自己还是能做出来的~ 就是遇到稍微复杂点就不会了。。。恩~ 本人基础是很薄弱~ 所以一直在不停的学习基础。。。。。
sinat_29437461 2015-08-06
  • 打赏
  • 举报
回复
引用 2 楼 lc316546079 的回复:
1,创建socket的代码,你都说了你一对一的时候怎么处理的了,那就没问题 2,3 简单点处理的话, 服务器端: 定义一个class user里面有你需要的变量,在你项目中你认为合适的地方定义list<user>变量咯; 一个客户端请求到了,创建其用户信息,加入到list中,创建一条线程,在线程中去维护对应的user信息,及功能逻辑
说的好像很有道理~~ 这部分都要学哪些知识呢? 定义一个类还是会的,但是不是还要牵扯到很多泛型的知识?
taogehujie 2015-08-06
  • 打赏
  • 举报
回复
加油,我也是新手,我项目快做完了可是我感觉我还是啥都不懂,哈哈,你首先先建立 服务器跟客户的的连接吧,实现通信再说。

110,548

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧