Linux网络编程
鹏割
勿忘初心
展开
-
Makefile入门
Makefile用于多文件工程的编译 例如一个简单的工程 1.add.h #ifndef _ADD_H #define _ADD_H extern int add_int(int a,int b); extern float add_float(float a, float b); #endif add_int.c int add_int(int a, int b) { return原创 2016-04-02 11:28:47 · 276 阅读 · 0 评论 -
简单的socket编程
服务端tcp_server.c:#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <unistd.h> #include <linux/in.h> #define PORT 8888 //端口地址 #define BAC原创 2016-04-13 18:13:44 · 295 阅读 · 0 评论 -
字节序
字节序是由于不同的主处理器和操作系统,对大于一个字节的变量在内存中的存放顺序不同而产生的。 通常有大端字节序和小端字节序两种。例如一个16位的整数,它由两个字节构成,在有的系统上会将高字节放在内存的低地址上,而有的系统则将高字节放在内存的高地址上,所以存在字节序的问题。Little endian:将低序字节存储在起始地址 Big endian:将高序字节存储在起始地址例如变量的值为0xabcd,原创 2016-04-14 11:22:46 · 326 阅读 · 0 评论 -
字节序转换函数
由于主机的千差万别,主机的字节序不能做到统一,但是对于网络上传输的变量,它们的值必须有一个统一的表示方法。网络字节序是指多字节变量在网络传输时的表示方法, 网络字节序采用大端字节序的表示方法。 所以小端字节序的系统通过网络传输变量的时候需要进行字节序转换,而大端字节序的变量则不要。Linux系统提供了如下函数进行字节序的转换。#include <arpa/inet.h> uint32_t htonl原创 2016-04-16 11:18:32 · 1680 阅读 · 0 评论 -
网络IO模型
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不转载 2016-04-21 13:11:57 · 249 阅读 · 0 评论 -
IO模型
IO的方式有阻塞IO,非阻塞IO,IO复用,信号驱动,异步IO等。 1.阻塞IO 阻塞IO是最通用的IO类型,使用这种模型进行数据接收时,在数据没有到之前程序会一直等待。2.非阻塞IO 当把套接字设置为非阻塞的IO,则对每次请求,内核都不会阻塞,会立即返回; 当没有数据的时候,会返回一个错误。3.IO复用 使用IO复用模型可以在等待的时候加入超时时间,当超时时间没有到达的时候与阻原创 2016-04-21 16:56:20 · 301 阅读 · 0 评论 -
简单的UDP通信的例子
客户端向服务端发送字符串UDP TEST,服务器接收数据后将接收到的字符串发送回客户端udp_server.c#include <sys/types.h> #include <sys/socket.h> /*socket()/bind()*/ #include <linux/in.h> /*struct sockaddr_in*/ #include <string.h> /*memset原创 2016-04-24 09:58:27 · 1191 阅读 · 0 评论