unix网络编程
文章平均质量分 61
linda_ds
1.真理掌握在少数人手里,多思考,不盲从;2.你的问题在于读得太少,想得太多。
展开
-
第一章习题分析
启动daytimetcpcli 前先启动 daytimetcpsrv题1.3 单独改 daytimetcpcli 的端口号sin_port = 9999 结果 :lin:~/unix-network-programing/unpv13e/intro$ ./daytimetcpcli 127.0.0.1connect error: Connection refused原因: 服务器程序day原创 2017-04-29 14:36:31 · 333 阅读 · 0 评论 -
理解fork函数
*改(补充的内容来自实战Linux编程精髓第9章)* fork函数原型: pid_t fork(void) fork函数较难理解的是:一次调用,两次返回。 其实,fork()不止调用一次,它是在父进程调用一次,在子进程也调用一次,通过两次调用的不同返回值来判断是位于父进程,还是位于子进程。 我根据它的执行原理,粗略画了如下的图: 在父进程中,调用fork函数时,操作系统将父进程缓冲区已原创 2017-05-16 21:32:40 · 1351 阅读 · 0 评论 -
ubuntu配置unix网络编程源码
1 ./configure # try to figure out all implementation differences 2 cd lib # build the basic library that all programs need 3 make # use "gmake" everywhere on BSD/OS systems 4原创 2017-04-27 23:48:24 · 342 阅读 · 0 评论 -
unix网络编程源码编译出错分析
lin@lin-X555LI:~/Downloads/unix-network-programing/unpv13e/lib$ cd ../libfreelin@lin-X555LI:~/Downloads/unix-network-programing/unpv13e/libfree$ makegcc -I../lib -g -O2 -D_REENTRANT -Wall -c -o in_原创 2017-04-27 23:06:41 · 2358 阅读 · 0 评论 -
accept error: Invalid argument
总结自己在运用accept函数时所出现的的“Invalid Argument”时的错误,主要有以下两种误用: 首先简单介绍一下accept函数头文件#include <sys/socket.h>定义:int accept(int sockfd, struct sockaddr* addr, socklen_t *addrlen)返回值:非负描述字-成功,-1出错出错情况1: 在参数1处出错,多转载 2017-05-18 19:27:30 · 2439 阅读 · 0 评论 -
inet_pton 和 inet_ntop 等函数
inet_pton 和inet_ntop对IPv4和IPv6都适用头文件中的声明如下: int inet_pton (int __af, const char *__restrict __cp, void *__restrict __buf)const char *inet_ntop (int __af, const void *__restrict __cp, char *__r原创 2017-05-06 23:18:13 · 1374 阅读 · 0 评论 -
网络字节序和主机字节序
字节序分大端字节序和小端字节序。 大端字节序(big-endian)与小端字节序(little-endian)的区别如图: 把给定系统使用的字节序称为主机字节序,网络协议使用的字节序称为网络字节序。网络字节序是大端字节序,而主机字节序由系统决定,因此,两者间需要转化后才能使用,有以下几个转换函数: 函数名中h->host; n->network; s->short; l->long;原创 2017-05-06 14:31:07 · 314 阅读 · 0 评论 -
套接字结构体
unix网络编程第三章书中的套接字结构体如下:IPv4套接字地址结构:以sockaddr_in命名在<netinet/in.h>头文件中, POSIX定义如下:struct in_addr { in_addr_t s_addr; // 32-bit IPv4 address};struct sockaddr_in { uint8_t sin_len; // l原创 2017-05-06 11:03:25 · 879 阅读 · 0 评论 -
宏定义笔记
宏定义有两种:简单宏定义,带参数的宏定义。 简单宏定义:#define 标识符 替换列表 #define为常量命名的优点: 1. 程序会更易读; 2. 程序更易于修改; 3. 可以帮助避免前后不一致或键盘输入错误; 其他应用: 1. 可以对C语法做小的修改:#define BEGIN { // 指令总在第一个换行符结束,除换行符之前加 \#define END }原创 2017-05-16 20:26:25 · 618 阅读 · 0 评论 -
回射函数错误分析
回射函数str_cli.c 正常情况下, 1.客户程序发送文本行,服务器程序回射文本行。 2.客户程序提前终止,服务器程序响应终止(如 child 10128 terminated). 3.服务器程序提前终止,客户程序响应终止(str_cli:server terminated prematurely)但是, 1.我的客户程序发送文本行后,服务器程序并没有回射文本行。 2.客户程序提前终原创 2017-06-10 15:59:40 · 258 阅读 · 0 评论