有几个小问题想向高手请问,有关SOCKET通信,多谢呀
发布时间:2011-06-28 14:01:40 文章来源:www.iduyao.cn 采编人员:星星草
有几个问题想向高手请教,有关SOCKET通信,谢谢呀
有几个问题想向高手请教:
一个主程序H面向其它3个子程序通信分别开了3个serversocket(每一子程序对应一个),如果其中一个子程序A在某一时间连续不断地发送一些测量数据(数据很小,但频率很快,假定测量仪器的频率为每秒测100次)给主程序H,H在接到第一个数据的同时要转发给子程序B,并且还要负责处理子程序C的一些请求。
问:1。H程序的实现是否需要用多线程的方式来搭建。
2. 如何用SOCKET实现H在接收A数据的同时将数据转发给B,能否实现收一个就单独转发一个?(程序来不来得及?)
3. A程序发送的时候,是用sendbuf()好呢,还是用sendtext() 还是其它的?总感觉用sendbuf()和receivebuf()在通信时不容易控制,比如如果数据通过一个结构传送,那接收端如何复制数据和拆分数据,
唉,可能讲得比较乱,不知有没有人明白我的意思,高手能帮帮偶,给点建议吗?谢谢呀。 或者留下QQ号或MSN,EMAIL也可以让我单独请教。
------解决方案--------------------
1.是否需要多线程并不是关键的,具体看应用的情况来确定,多线程会有多线程的问题,个人建议先实现功能;
2.只能程序当中进行转发,当然可以使用重叠IO进行异步发送;
3.SendBuf和SendText没有本质的区别,但是即使使用SendText也要处理返回值(实际发送的字节数),不未完全发送完预期发送的数据时继续发送后续数据,Recv的时候也是一样。实际上ReceiveBuf更容易控制。
------解决方案--------------------
自己定义个结构,里面指定包的长度等,接收到了以后,根据你自己定义个格式,解析处理各个字段
------解决方案--------------------
这个数据结构就相当于一个协议,只要你双方都是按照这个协议来作就没有问题了,最简单的就是一个BUFF长加上BUFF就可以了晒
你把 收数据和发送数据都开为单独的线程,只要程序启动起来就让这两个线程执行起来就可以了嘛,不用管速度,现在计算的速度应该可以解决你说的那个问题,最多再给线程加个锁,就可以解决问题了。
不用担心那么多,因为你的三个子程序的SOCKET可以用不同的端口嘛(port),所以不会互相影响,所以你想开几个线程几个SOCKET都没有关系的!
------解决方案--------------------
问:1。H程序的实现是否需要用多线程的方式来搭建。
2. 如何用SOCKET实现H在接收A数据的同时将数据转发给B,能否实现收一个就单独转发一个?(程序来不来得及?)
3. A程序发送的时候,是用sendbuf()好呢,还是用sendtext() 还是其它的?总感觉用sendbuf()和receivebuf()在通信时不容易控制,比如如果数据通过一个结构传送,那接收端如何复制数据和拆分数据,
答:1。可以使用多线程,但根据你的具体问题,由于没有需要计算的部分,仅是转发数据,且数据量小使用单线程并发服务器更适合,简单点就是TClientSocket的非阻塞模式,自己可用Select实现。
2。可以实现收一个就单独转发一个,关键是定义好应用协议如:包头 数据 包尾,注意定义好转义字符,你的H进行拆包然后转发
3。SendBuf适合传二进制数据,对于文本如ASCII字符用SendText。当然SendBuf也适合文本。
4。如程序允许一定丢包对顺序要求不高,用udp可以避免封包。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
C#项目中如何更改项目保存的文件夹名?
求解。。
------解决方案--------------------
好像需要重构吧,同样求高人解答。
------...
-
C#中让TextBox只能输入数字的问题
我用的如下的代码:
static private Regex r = new Regex("^[0-9]{1,}$ ");
...
-
带数据库的程序打包注意什么?
打的包出错:Error:System.InvalidOperationException: ExecuteReader 要求已打开且可用的连接。连接的...
-
想学习一下网络程序开发 请给推荐几本书
学习基于http协议的程序开发 比如获取网页 分析网页 模拟网页操作 下载上传文档等知识 ...
-
qq的安装包是用什么工具?
想用.net制作一个想qq一样比较漂亮的安装包。有例子最好
------解决方案--------------------
新建->安...
-
C# 写的windows服务 调用 C++ dll 的问题
我封装了一个dll
用一个普通的winform程序 调用的时候没 问题。
但是放在C#写的服务程...
-
在VS2005中怎么调出 解决方案 那个图标?(图示)求解释~~~
这是我用的VS
这是我在教学视频上看到的VS
------解决方案------------...
-
寻友
有人在自学c#编程吗,可以互相认识一下,以后共同探讨学习中的问题……
------解决方案--------------------
朋友多了,路好走~
...
-
急!急!急!C#代码
怎样将数据库中的数据动态加载到Treeview控件中
------解决方案--------------------
C# code
void CreateTree(T...
-
救急??????????????????
哪位高手帮我一下,在C#中怎么写关于鼠标和键盘监听事件,我的程序就差监听鼠标和键盘是否动,然后定时关机这个功能了,请高手指点,...