写聊天室之前 了解聊天室拓展出来的各种知识点
TCP:并发服务器 效率最高 多线程
UDP:循环服务器 不需要listen accept connect
Select(多路复用): 循环服务器
网络编程注意点:
TCP/IP 四层模型 { 应用层,传输层,网络层,网络接口层 }
背三次握手四次挥手
DHCP协议是什么?
套接字 有三种:
- TCP 流套接字 sock_stream
- UDP 数据报套接字 sock_dgram
- 原始套接字
服务器有什么?
- IP 用以在局域网中 找到你的电脑(你就理解成定位系统)
- 端口号 找到对应的软件(比如是发消息给你的电脑 哪个程序来接受消息?
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位
写聊天室之前 了解聊天室拓展出来的各种知识点相关推荐
- php程序 聊天,php及时聊天程序(php聊天室)代码
废话少说,直接上代码 define('ROOT_PATH', dirname(__file__).'/'); date_default_timezone_set('PRC'); $lang['titl ...
- THINKPHP聊天软件H5实时聊天室自动分配账户全开源商业源码
介绍: THINKPHP聊天软件H5实时聊天室,自动分配账户,全开源商业源码 都是去年买的,很多买的源码基本都下架了, 源码的优点: 运营版本的聊天室,可以添加好友,建立群组,私聊,禁言功能 H5+T ...
- 网络编程基础_5.3聊天室-多人聊天室
聊天室-多人聊天室 #include <stdio.h>// 1. 包含必要的头文件和库, 必须位于 windows之前 #include <WinSock2.h> #prag ...
- 聊天室登录php,聊天室技术(二)-- 登录_PHP
1 页面登陆幕疽? 你可以在我的竹叶看到登陆的表单,这里提供了最基本的登陆表单项 (1)登陆表单 (a)聊天表单的名字为chatform,我使用action=enter作为进入聊天室的入口,如果没 ...
- IM即时通信多房间聊天室仿微信聊天(二)
IM即时通信多房间聊天室仿微信聊天(服务器自定义处理客户端消息) 在IM即时通信多房间聊天室仿微信聊天(一)中我们已经搭建了基本的通信架构,接下来重点就是如何在自己的后台接收并处理客户端用户的消息了 ...
- IM即时通信多房间聊天室仿微信聊天(四)
聊天记录的保存和展示 IM即时通信多房间聊天室仿微信聊天(一) IM即时通信多房间聊天室仿微信聊天(二) IM即时通信多房间聊天室仿微信聊天(三) 聊天消息的保存我们直接在服务端接收到客户端发送的消息 ...
- vue仿QQ聊天室|vue聊天实例,直播聊天室
图片压缩 百亿站点 基于vue2.0+vue-cli+vuex+vue-router+webpack+es6+wcPop等技术开发的仿微信聊天界面|仿微信聊天室vue-chatRoom,实现了微信聊天 ...
- 基于JavaSwing开发聊天室(QQ聊天 群聊)系统+论文+PPT 大作业 毕业设计项目源码
基于JavaSwing开发聊天室(QQ聊天 群聊)系统+论文+PPT(毕业设计/大作业) 开发环境: Windows操作系统 开发工具: Eclipse/Myeclipse+Jdk 演示视频: jav ...
- 聊天源码IM聊天室模板 群组聊天app 即时通讯IM设计聊天
(此贴长期有效) 系统提供多种方式合作,支持源码转让/支持按年整体运维合作/支持行业定制开发,更多需求请联系我们 团队Tel:15538001716 (V同) 独立IM:个性化定制,私有化部署,全功能 ...
- python写机器人程序_用Python写的一个多线程机器人聊天程序
本人是从事php开发的, 近来想通过php实现即时通讯(兼容windows).后来发现实现起来特别麻烦, 就想到python.听说这家伙在什么地方都能发挥作用.所以想用python来做通讯模块...所 ...
最新文章
- python之re模块
- 用python随机生成数字_如何实现python随机生成数字?
- 一句SQL随机查询ACCESS中的几条记录
- 循环结构作业c语言,C语言循环结构练习题带答案(最新整理)
- SAP Spartacus Enable the unit to allow editing 的信息提示框实现
- CVPR 2021 分布对齐,长尾分布问题解决新思路
- (2)zynq FPGA AXI_Lite总线介绍
- centos使用vnc实现远程访问图形化界面
- Spring-beans-BeanDefinitionRegistry
- sublime 设置自动更新_Win10关闭自动更新的三种方法
- Python成员修饰符,metaclass,异常,反射,单例
- Atitit.每月数据采集与备份 v4
- android 菜鸟面单打印_关于菜鸟的圆通电子面单打印
- Carthagecocopads 摘抄笔记
- 手机必备应用:狐猴浏览器,一站式开启浏览器的所有用法
- 【程序人生】IT界含金量高的证书
- 普林斯顿大学算法公开课笔记
- layui card高度不匹配文字
- android wifi流量监控,Android流量监测的实现原理
- java文件夹拒绝访问-java.io.FileNotFoundException: .\xx\xx (拒绝访问。)
热门文章
- 中运用_胶水在木雕中的运用技巧
- 计算机模块怎么算,计算基础
- python编写星号菱形中间是空的_简单空实心图形打印|Python练习系列[3]
- php表单显示mysql数据库_php用表单形式显示数据库信息
- Ubuntu_Win10双系统互换注意事项以及蓝屏解决方案
- tensorflow怎样调用gpu_tensorflow基本用法(图,会话,tensor,变量等)
- python debug工具_常用的 Python 调试工具,Python开发必读-乾颐堂
- 修改主机名hosts
- flask python web开发 可视化开发_Python + Flask 项目开发实践系列六
- 超凡先锋怎么进入维护服务器,超凡先锋新手教程怎么过 新手教程攻略_超凡先锋...