zoukankan      html  css  js  c++  java
  • SOCKET通讯的一些试验

    一直很不明白UDP和TCP两种协议的优劣,趁着最近要弄个简易的消息处理中心的机会,做了点试验:

    1. 单UDP端口的服务器,模型如下

    这里工作线程有一个UDP的SOCKET(即分配了一个独立的UDP端口),它发送信息给服务器,然后等待服务器返回信息,然后再发送下一个信息,即此模型是一应一答的。而服务器端,接收线程监听一固定端口来接收信息,并记录远程IP和PORT;发送线程根据记录的远程IP和PORT,回馈信息。

    试验:现在给每个工作线程分配10个请求(RESET),并请求10次,一共有10个工作线程,那么服务器端应该处理1000个请求,为了不让请求太快,每个工作线程在收到服务器应答后等待10毫秒

    结果:任务分配开始2秒后线程完成所有请求,查看服务器端接收线程日志,发现收到所有1000条请求,但有异常的请求出现,如下图:

    而这种请求不少,推断是接收信息时把几个UDP包一起收到一个信息里面了,但很奇怪,接收的数量还是1000条。我猜想是由于在某一时刻,同时到达了几个UDP包造成这种异常。如果要去除异常就需要在信息头加上信息长度,这样就会避免有异常信息搅乱逻辑信息了。不过个人觉得纯粹用UDP来做多客户端的服务器通讯,还是会有很多问题的,还是推荐用TCP,这就是为啥TCP要在接收时创建一个新SOCKET的原由吧。由此看IIS之类服务器用TCP还是有道理的,呵呵。

  • 相关阅读:
    推荐大家使用的CSS书写规范、顺序
    只能输入数字的文本框
    js和jQuery 获取屏幕高度、宽度
    jquery插件开发规范
    ie下使用firebug
    equals和==的使用
    引用数据类型的赋值
    数组工具Arrays的基本使用
    冒泡排序
    使用数组对杨辉三角练习
  • 原文地址:https://www.cnblogs.com/enli/p/1322747.html
Copyright © 2011-2022 走看看