1、

2、

>>>   int socket(int af, int type,int protocol);//创建套接字,返回从文件描述表中取出新的索引号(int);AF_INET,SOCK_DGRAM/SOCK_STREAM,0;阻塞式socket

int close(int d);/int shutdown(int socket,int direction);//关闭

//将int s套接字转成nonblock

void nonblock(int s)

{

  int flags;

flags = fcntl(s, F_GETEL,0);//获取

flags != O_NONBLOCK;

if(fcntl(s,F_SETFL,flags)<0) exit(1);//设置

}

struct sockaddr{

u_short sa_family;

char sa_data[14];

}

struct in_addr{

u_long s_addr;

};

struct sockaddr_in{

short sin_family;

u_short sin_port;

struct in_addr sin_addr;

char sin_zero[8];

}

>>>  int connect(int s, const struct sock* name, socklen_t namelen);

int connectToServer(int sock)

{

struct sockaddr_in  s_addr_in;

s_addr_in.sin_family = AF_INET;

s_addr_in.sin_port = htos(8001);

s_addr_in.sin_addr.s_addr = inet_addr(“127.0.0.1”);//ip转为usigned long 二进步数,相反 char*  inet_ntoa(struct in_addr in);

if(connect(sock,(struct sockaddr*)&s_addr_in,sizeof(s_addr_in))<0)

        return 0;

return 1;

}

//域名转成long 类型二进制地址

unsigned long getaddrbydomain(char* addr)

{

struct hostent *ph;

struct in_addr in;

ph = gethostbyname(addr);

memcpy((char**)&(in),ph->_addr,ph->h_length);

return (in.s_addr);

}

struct hostent

{

char h_name;

char **h_aliases;

int h_addrtype;

int h_length;

char **h_addr_list;//名字服务器上的地址列表

}

>>>  int bind(int s, const struct sockaddr* addr, socklen_t addrlen);

>>>  int listen(int s, int backing);

>>>  int accept(int s, struct sockaddr *addr, socklen_t *addrlen);//返回分配到的套接字

>>>  ssize_t send(int s,const void *msg,size_t len, int flags);

>>>  int recv(int s, void *buf, size_t len, int flags);//buf 接收到的数据,返收的数据长度;flags{MSG_OOB,MSG_PEEK/*从receive_queue取出数据到buf后不删除原来的*/}

>>>  int write(int s, void *buf, size_t len);//与send相同

>>>  int read(int s, void *buf ,size_t len);//recv

>>>  int sendto (int s,const void *msg,size_t len, int flags, const struct sockaddr* to, socklen_t tolen);//相当于connect 与send组合

>>>  int recvfrom(int s, void *buf ,size_t len, int  flags, struct sockaddr* from, socklen_t  * fromlen);//相当于accept与recv合并

>>>  int select(int nfds, fd_set *readfds, fd_set * writefds, fd_set *exceptfds, struct timeval * timeout);

>>>   int setsockopt(int s,int level, int optname, const void* optval, unsigned int optlen);/getsockopt

>>>  void (*signal(int signum,void(*handler)(int)))int);

>>> errno

3. winsock

>>> int WASStartup(WORD wVersionRequest,LPWSADATA lpWSAData);

>>>  int WSACleanup();

struct WSAData {    WORD             wVersion;    WORD             wHighVersion;    char             szDescription[WSADESCRIPTION_LEN+1];    char             szSystemStatus[WSASYSSTATUS_LEN+1];    unsigned short   iMaxSockets;    unsigned short   iMaxUdpDg;    char FAR *       lpVendorInfo;
};
>>>  SOCKET socket(int af,int type,int protocol);
>>>  int closesocket(SOCKET s);
>>>  int ioctlsocket(SOCKET s,long cmd, u_long FAR* argp);//fcntl/ioctl
>>>  int connect(SOCKET s, const struct sockaddr FAR* name,int namelen);
>>>  int bind(SOCKET s, const struct sockaddr FAR* name,int namelen);
>>> int listen(SOCKET s, int backlog);
>>>  SOCKET accept( SOCKET s,struct sockaddr FAR*addr,int FAR*addrlen);
>>>  int send ( SOCKET s, const char FAR * buf, int len, int flags ); 
>>> int recv ( SOCKET s, char FAR* buf, int len, int flags ); 
>>> sendto /recvfrom
>>>  select/WSAAsyncSelect/WSAEventSelect
>>> getsockopt/setsockopt
>>>  WSAGetLastError

TCP/IP学习笔记的更多相关文章

  1. tcp/ip学习笔记-TCP

    tcp/ip学习笔记-TCP 彭会锋 报文发送采用的是tcp_output函数,

  2. TCP/IP学习笔记(3)-IP、ARP、RARP协议

    这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据 ...

  3. TCP/IP学习笔记(3)----IP,ARP,RARP协议

    把这三个协议放到一起学习是因为这三个协议处于同一层(网络层协议),ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP ...

  4. TCP/IP学习笔记17--TCP-- 窗口控制 重发控制 流控制

    事业无穷年 -- 韩愈 利用窗口控制提高速度: TCP传输数据是,以一个段为单位(每次发送一个数据包),每发一个段需要一次确认应答,这样就难免存在这样的缺点:包的往返时间越长,通信性能就越低. 为解决 ...

  5. TCP/IP学习笔记(2)-数据链路层

    数据链路层有三个目的: 为IP模块发送和接收IP数据报. 为ARP模块发送ARP请求和接收ARP应答. 为RARP发送RARP请求和接收RARP应答 ip大家都听说过.至于ARP和RARP,ARP叫做 ...

  6. tcp/ip学习笔记(1)-基本概念

    为什么会有tcp/ip 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样.计 ...

  7. TCP/IP学习笔记(5)------IP选路

    静态IP选路 一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据包的IP地址来选择路由.这里就不重复了.首先来看看一个简单的系统路由表. D ...

  8. TCP/IP学习笔记1--概述,分组交换协议

    1.TCP/IP 互联网是由许多独立发展的网络通信技术融合而成的,能够使它们不断融合并实现统一的正式TCP/IP技术,TCP/IP使通信协议的统称. TCP/IP协议模型(Transmission C ...

  9. TCP/IP学习笔记18--TCP--拥塞控制 (慢开始, 拥塞避免, 快重传和快恢复)

                                                            用最多的梦面对未来   -- 李嘉诚 在某段时间,若对网络资源的需求超过了该资源所能提供 ...

  10. TCP/IP学习笔记16--TCP--特点,数据重发,连接管理,段

    TCP充分实现了数据传输时各种控制功能,可以进行丢包时的重发控制,还可以对次序乱掉的包进行顺序控制,这些在UDP中都是没有的.UDP是一种没有复杂控制,提供面向无连接通信服务的一种协议.TCP是面向有 ...

随机推荐

  1. 将内部部署网络和 Windows Azure 集成的新选项: 使用AT&T

    关于云计算的主要对话围绕着向云迁移展开.今天,我们宣布与 AT&T 结为战略联盟,共同为客户提供云计算服务.这一合作伙伴关系将授权客户访问 Windows Azure,作为其现有数据中心的逻辑 ...

  2. Highlighting an element as it is hovered over (like inspect element in FireBug) - jQuery Forum

    Highlighting an element as it is hovered over (like inspect element in FireBug) - jQuery Forum Highl ...

  3. Android二维码开源项目zxing用例简化和生成二维码、条形码

    上一篇讲到:Android二维码开源项目zxing编译,编译出来后有一个自带的測试程序:CaptureActivity比較复杂,我仅仅要是把一些不用的东西去掉,用看起来更方便,二维码和条形码的流行性自 ...

  4. 四核网络机顶盒芯片局势分析(开放市场):rk3128将会成为四核主流

    开放市场:不包含小米.乐视等大品牌闭环生态系统的市场. 今年四核网络播放器以全志的a31s独领风骚.英菲克以绝对优势率先各大白牌品牌公司.只是随着时间的推移,全志的a31s不适应市场主流.因为芯片没有 ...

  5. 面试题之java 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 要求不能出现截半的情况

    题目:10. 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串. 但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输 ...

  6. C语言的指针变量

    C语言的指针变量 在C语言中,变量是固定范围的存储空间,它存储的是赋给他的值, 比如: ; /* 这里是定义一个整型变量a,并把12这个值存储在a的地址空间上 这个地址空间是系统随机分配的,对用户是透 ...

  7. HDU2084-数塔

    描述: 在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少? 代码: 简单的动态规划 ...

  8. python自学笔记(四)python基本数据类型之元组、集合、字典

    一.元组tuple 特性 1.有序集合 2.通过偏移来取数据 3.不可变对象,不能在原地修改内存,没有排序.修改等操作 元组不可变的好处:保证数据的安全,比如我们传给一个不熟悉的方法,确保不会改变我们 ...

  9. IOS 警告框 (UIAlertView)的使用方法

    1.普通警告框 IOS的SDK中提供了一个方便的类库UIAlertView,配合着不同参数来使用此类可以做出大多数的警告框,如下代码是IOS最简单的警告框. UIAlertView *alert = ...

  10. BootStrap 轮播 Carousel

    参考 http://wrongwaycn.github.io/bootstrap/docs/javascript.html#collapse 同样 启动方式有2种 一种是在div的class中加  另 ...