zoukankan      html  css  js  c++  java
  • 看代码和写代码还是很不同的

    代码看懂了不难,但是简单的代码从头到尾写出来也不容易。

    写个TCP服务器&客户端。是从UDP改过来的,那费老劲了。

    最开始listen出错,原来SOCK_DGRAM忘记修改为SOCK_STREAM了,

    接着发现listen的端口不对,原来忘记bind了,

    后面发现客户端发送数据服务端接收不到,再看代码,原来都没有accept/connect。

    加上accept和connect,客户端提示成功了,但是服务端没有返回,查了半天,发现客户端忘记把SOCK_DGRAM修改为SOCK_STREAM了。

    太弱了。

    不过最终改了,写这个简单的程序,目的是为了验证下消息分帧的特点:

    消息分帧
    使用消息分帧机制,就可以保护消息只在一个边界内通过socket进行通信;这意味着如果客户机向服务器先发送100个字节,然后又发送50个字节。那么服务器就会在两次读取操作中分别读取到100个字节和50个字节。UDP也是这样进行操作,这对于面向消息的协议非常有益。
    与此不同,TCP是按照字节流的方式进行操作。如果没有分帧机制,一端接收到的数据可能比另外一端发送的数据多或少(这会将一次写操作划分成多次操作,或者将多次写操作合并到一个读操作中)。这种行为需要在TCP之上进行操作的面向消息的协议可以在应用层中提供数据缓冲和消息分帧机制(这可能是一项复杂的任务)。
  • 相关阅读:
    centos7 安装redis服务及phpredis扩展
    centos7 LANMP 安装
    php reids 单机命令
    浅谈正向代理和反向代理
    php-fpm日志告警"seem busy"
    PHP-redis中文文档
    Nginx配置文件nginx.conf中文详解
    生成带参数的微信二维码
    微信临时二维码时为32位非0整型
    [Linux]Service mysql start出错(mysql: unrecognized service)解决方法
  • 原文地址:https://www.cnblogs.com/lijinlei/p/4461042.html
Copyright © 2011-2022 走看看