TCP:并发服务器 效率最高 多线程

UDP:循环服务器 不需要listen accept connect

Select(多路复用): 循环服务器

网络编程注意点:

TCP/IP 四层模型 { 应用层,传输层,网络层,网络接口层 }

背三次握手四次挥手

DHCP协议是什么?

套接字 有三种:

  1. TCP 流套接字 sock_stream
  2. UDP 数据报套接字 sock_dgram
  3. 原始套接字

服务器有什么?

  1. IP 用以在局域网中 找到你的电脑(你就理解成定位系统)
  2. 端口号 找到对应的软件(比如是发消息给你的电脑 哪个程序来接受消息?

QQ/微信/SKAPE)

Bind / accept 等的第二个参数 需要加强制转换类型

第二个参数 的结构原型:

Struct sockaddr

{

U_short sa_family; //地址族协议

Char sa_data[14]; //存放ip 与 端口号

};

有关端口号: 1-65535 (x shell 中 connecting to 192.168.128.91  :  22这里的22就是端口号)

1-1023 一般不用 被各种协议 占用了

(1)知名端口(Well-Known Ports)

知名端口即众所周知的端口号,范围从0到1023,这些端口号一般固定分配给一些服务。比如21端口分配给FTP服务,25端口分配给SMTP(简单邮件传输协议)服务,80端口分配给HTTP服务,135端口分配给RPC(远程过程调用)服务等等。

(2)动态端口(Dynamic Ports)

动态端口的范围从1024到65535,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用。比如1024端口就是分配给第一个向系统发出申请的程序。在关闭程序进程后,就会释放所占用的端口号。

然后 这个结构慢慢演变了

Struct sockadddr_in

{

Short int sin_family; //internet 地址族

Unsigned short sin_port; //端口号 (自己要指定)

Struct in_addr sin_addr; //IP地址

Unsigned char sin_zero[8]; //填0

};

这里就又涉及到一个知识点:大小端的转换

内存中分为 高地址 和 低地址

而数据又有 高字节 和 低字节

大端:高字节存放在低地址中

小端:低字节存放在低地址中

一般

小端:主机的字节序

大端:网络的字节序

(遇到相关问题和题目 注意平台与电脑键的转换)

有关大小端的转换:

Int  a  =  1;

A & 0x000000ff << 24  |

A & 0x0000ff00 << 8   |

A & 0x00ff0000 >> 8   |

A & 0xff000000 >>24

将A的左右移位完成大小端的转化

Htonl:(在#include <arpa/inet.h> 头文件中)

H:host 主机

To:

N:网络

L:两个字节 32位

S:一个字节 16位

写聊天室之前 了解聊天室拓展出来的各种知识点相关推荐

  1. php程序 聊天,php及时聊天程序(php聊天室)代码

    废话少说,直接上代码 define('ROOT_PATH', dirname(__file__).'/'); date_default_timezone_set('PRC'); $lang['titl ...

  2. THINKPHP聊天软件H5实时聊天室自动分配账户全开源商业源码

    介绍: THINKPHP聊天软件H5实时聊天室,自动分配账户,全开源商业源码 都是去年买的,很多买的源码基本都下架了, 源码的优点: 运营版本的聊天室,可以添加好友,建立群组,私聊,禁言功能 H5+T ...

  3. 网络编程基础_5.3聊天室-多人聊天室

    聊天室-多人聊天室 #include <stdio.h>// 1. 包含必要的头文件和库, 必须位于 windows之前 #include <WinSock2.h> #prag ...

  4. 聊天室登录php,聊天室技术(二)-- 登录_PHP

    1 页面登陆幕疽? 你可以在我的竹叶看到登陆的表单,这里提供了最基本的登陆表单项 (1)登陆表单 (a)聊天表单的名字为chatform,我使用action=enter作为进入聊天室的入口,如果没 ...

  5. IM即时通信多房间聊天室仿微信聊天(二)

    IM即时通信多房间聊天室仿微信聊天(服务器自定义处理客户端消息) 在IM即时通信多房间聊天室仿微信聊天(一)中我们已经搭建了基本的通信架构,接下来重点就是如何在自己的后台接收并处理客户端用户的消息了 ...

  6. IM即时通信多房间聊天室仿微信聊天(四)

    聊天记录的保存和展示 IM即时通信多房间聊天室仿微信聊天(一) IM即时通信多房间聊天室仿微信聊天(二) IM即时通信多房间聊天室仿微信聊天(三) 聊天消息的保存我们直接在服务端接收到客户端发送的消息 ...

  7. vue仿QQ聊天室|vue聊天实例,直播聊天室

    图片压缩 百亿站点 基于vue2.0+vue-cli+vuex+vue-router+webpack+es6+wcPop等技术开发的仿微信聊天界面|仿微信聊天室vue-chatRoom,实现了微信聊天 ...

  8. 基于JavaSwing开发聊天室(QQ聊天 群聊)系统+论文+PPT 大作业 毕业设计项目源码

    基于JavaSwing开发聊天室(QQ聊天 群聊)系统+论文+PPT(毕业设计/大作业) 开发环境: Windows操作系统 开发工具: Eclipse/Myeclipse+Jdk 演示视频: jav ...

  9. 聊天源码IM聊天室模板 群组聊天app 即时通讯IM设计聊天

    (此贴长期有效) 系统提供多种方式合作,支持源码转让/支持按年整体运维合作/支持行业定制开发,更多需求请联系我们 团队Tel:15538001716 (V同) 独立IM:个性化定制,私有化部署,全功能 ...

  10. python写机器人程序_用Python写的一个多线程机器人聊天程序

    本人是从事php开发的, 近来想通过php实现即时通讯(兼容windows).后来发现实现起来特别麻烦, 就想到python.听说这家伙在什么地方都能发挥作用.所以想用python来做通讯模块...所 ...

最新文章

  1. python之re模块
  2. 用python随机生成数字_如何实现python随机生成数字?
  3. 一句SQL随机查询ACCESS中的几条记录
  4. 循环结构作业c语言,C语言循环结构练习题带答案(最新整理)
  5. SAP Spartacus Enable the unit to allow editing 的信息提示框实现
  6. CVPR 2021 分布对齐,长尾分布问题解决新思路
  7. (2)zynq FPGA AXI_Lite总线介绍
  8. centos使用vnc实现远程访问图形化界面
  9. Spring-beans-BeanDefinitionRegistry
  10. sublime 设置自动更新_Win10关闭自动更新的三种方法
  11. Python成员修饰符,metaclass,异常,反射,单例
  12. Atitit.每月数据采集与备份 v4
  13. android 菜鸟面单打印_关于菜鸟的圆通电子面单打印
  14. Carthagecocopads 摘抄笔记
  15. 手机必备应用:狐猴浏览器,一站式开启浏览器的所有用法
  16. 【程序人生】IT界含金量高的证书
  17. 普林斯顿大学算法公开课笔记
  18. layui card高度不匹配文字
  19. android wifi流量监控,Android流量监测的实现原理
  20. java文件夹拒绝访问-java.io.FileNotFoundException: .\xx\xx (拒绝访问。)

热门文章

  1. 中运用_胶水在木雕中的运用技巧
  2. 计算机模块怎么算,计算基础
  3. python编写星号菱形中间是空的_简单空实心图形打印|Python练习系列[3]
  4. php表单显示mysql数据库_php用表单形式显示数据库信息
  5. Ubuntu_Win10双系统互换注意事项以及蓝屏解决方案
  6. tensorflow怎样调用gpu_tensorflow基本用法(图,会话,tensor,变量等)
  7. python debug工具_常用的 Python 调试工具,Python开发必读-乾颐堂
  8. 修改主机名hosts
  9. flask python web开发 可视化开发_Python + Flask 项目开发实践系列六
  10. 超凡先锋怎么进入维护服务器,超凡先锋新手教程怎么过 新手教程攻略_超凡先锋...