
TCP/IP网络编程
ChristmasError
GithubBlog:https://christmaserror.github.io/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
《TCP/IP网络编程》第5章 笔记&代码&注释
在第四章中的回声迭代客户端中,客户端通过write()一次性将字符串发送过去,之后调用read()等待接受自己传输的字符串,因此这个回声迭代客户端是不完美的。解决方法就是提前确定接受数据的大小://Linuxwhile(1){ //......相同省略 int str_len=write(sock,message,strlen(message)); int ...原创 2018-12-04 14:00:37 · 315 阅读 · 0 评论 -
《TCP/IP网络编程》IOCP 完成端口技术
IOCP 完成端口技术完成端口技术,IOCP(complete port)就是系统帮你完成网络IO操作,在客户端极多的情况下,这种模型效率很高。多线程模型下:每个客户端都分配一个线程的话,那么CPU会把大部分时间片都浪费在线程之间的调度上,而不是每个线程中对网络数据的处理上。而I/O重叠模型让CPU的工作更多集中在网络数据的处理而非线程调度。一个很有趣的比喻:IOCP技术相当于...原创 2020-04-01 23:20:14 · 517 阅读 · 0 评论 -
Windows网络编程 I/O复用的多人聊天室
代码:https://github.com/ChristmasError/TCP-IP-Network-programming/tree/master/WINDOWS%20IO%E5%A4%8D%E7%94%A8%E5%A4%9A%E4%BA%BA%E8%81%8A%E5%A4%A9%E5%AE%A4%E5%AE%9E%E7%8E%B0请多开几个客户端进行测试。//server#d...原创 2018-12-10 10:17:53 · 806 阅读 · 1 评论 -
《TCP/IP网络编程》第13章 笔记&代码&注释
在之前我们Windows使用了很多次的send()和recv()来进行数据的收发,但我们并未向最后一个参数传递过 0 之外的参数。另外还有许多I/O函数多种I/O函数在Linux中的send() & recv()最后一个参数是为了指定可选项信息,在之前并未向其传递0之外的参数。可传递参数包括以下但不止这些:MSG_OOB 传输带外数据(优先传输) MSG_PEEK...原创 2018-12-06 17:51:49 · 271 阅读 · 0 评论 -
《TCP/IP网络编程》第12章 笔记&代码&注释
本人常用环境是WINDOWS,因此暂时略读根据书上提示跳过10、11章进行笔记:Windows相较于Linux,多进程服务器并不适用,10~11章重点放在Linux平台。复用在一个通信频道中传递多个数据(信号)的技术。为了提高物理设备的效率,利用最少的物理要素传递最多的数据使用的技术。I/O复用服务器端类比成课堂:1位老师服务多位学生;只有当(客户端)学生举手提问,老师...原创 2018-12-06 14:34:11 · 219 阅读 · 0 评论 -
《TCP/IP网络编程》第4章 笔记&代码&注释
TCPTCP Transmission Control Protocol 传输控制协议,意为对数据传输过程的控制。TCP/IP 协议栈TCP/IP 协议栈分四层:应用层 TCP层/UDP层 IP层 链路层根据2.的TCP套接字还是UDP套接字收发数据,他们的协议栈各不相同。链路层物理连接领域标准化的结果,是最基本的领域,定义LAN、WAN、MAN等网络标准。IP...原创 2018-12-03 21:21:22 · 278 阅读 · 0 评论 -
《TCP/IP网络编程》第9章 笔记&代码&注释
Windows套接字可选项和I/O缓冲大小实际中我们需要根据特性对套接字进行更改(例如 广播特性),之前我们的程序都是通过默认的套接字特性进行数据通信。//Windows#include<winsock2.h>int getsockopt(SOCKET sock,int level ,int optname, char* optval,int *optlen);//...原创 2018-12-05 18:09:49 · 192 阅读 · 0 评论 -
《TCP/IP网络编程》第8章 笔记&代码&注释
DNSDNS(Domain Name System 域名系统)DNS是对IP地址和域名进行相互转换的系统,核心为DNS服务器。(IP地址和域名地址:百度为例)IP地址:119.75.217.109域名地址:www.baidu.com在浏览器上访问,进入的都是百度的搜索页面,但是他们访问的接入过程不同。域名是分配给服务器端的虚拟地址,DNS要将这虚拟地址转化为实际地址(I...原创 2018-12-05 16:52:09 · 179 阅读 · 0 评论 -
《TCP/IP网络编程》第7章 笔记&代码&注释
Linux的close()函数与Windows的closesocket()意味着完全断开连接,这令他无法再收&发数据。为了更加优雅的断开连接:只断收发其中的一个功能,close()和closesockI()就显得不太够用。shutdown()//linux#include<sys/socket.h>int shutdown(int sock,int howto...原创 2018-12-05 16:17:56 · 205 阅读 · 0 评论 -
《TCP/IP网络编程》第3章 笔记&代码&注释
IP(网络协议Internet Protocol):为了收发网络数据而给计算机分配的值。端口号:为了区分程序中创建的套接字而分配给套接字的序号。网络地址IPv4 4字节地址族(目前主要使用) IPv6 16字节地址族(为了应对IP地址耗尽而提出的标准,但现在仍未普及)IPv4IPv4标准的4字节地址分为网络地址和主机(计算机)地址,且分为A,B,C,D,E类型,E类为已预约地址...原创 2018-12-03 19:58:28 · 234 阅读 · 0 评论 -
《TCP/IP网络编程》第2章 笔记&代码&注释
注:本章内容大部分为第一章的服务器与客户端代码的解析与理解,十分重要协议服务器端和客户端为了能进行数据交换,他们必须遵循同一个协议: 创建套接字int socket(int domain, int type, int protocol)//LinuxSocket socket(int domain, int type, int protocol)//Windomain...原创 2018-12-02 23:42:42 · 274 阅读 · 0 评论 -
《TCP/IP网络编程》第1章 笔记&代码&注释
注释笔记在代码内:服务器://以下均在VS2015 WINDOWS平台编译并运行//在Linux中 头文件为://#incude<sys/socket.h>//以下为服务端代码示例#define _WINSOCK_DEPRECATED_NO_WARNINGS#pragma comment(lib, "ws2_32.lib")#include<stdio.h...原创 2018-12-02 20:22:36 · 342 阅读 · 0 评论 -
《TCP/IP网络编程》第6章 笔记&代码&注释
基于UDP的回声迭代客户端&服务端代码:在Linux和Windows里,recvfrom()和sendto()函数并无太大区别。对比recvfrom() 和 recv(),recvfrom()多了两个参数用来接收对端的地址信息,这对于UDP无连接可以方便的进行回复;send()和sendto()同理。在代码中,服务器端使用sendto()是因为其socket并无与客户端建立...原创 2018-12-04 21:44:46 · 210 阅读 · 0 评论 -
编写关于服务器的动态链接库时出现报错:错误1:error LNK2019: 无法解析的外部符号 _functionname@12,该符号在函数 _xxxxxx 中被引用
1>------ 已启动生成: 项目: server, 配置: Debug Win32 ------1>正在编译…1>server.cpp1>正在链接…1>server.obj : error LNK2019: 无法解析的外部符号 _functionname@12,该符号在函数 _xxxxxx 中被引用1>server.obj : error LNK20...原创 2019-01-28 15:04:32 · 1048 阅读 · 0 评论