TCP/IP学习笔记
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学习笔记的更多相关文章
- tcp/ip学习笔记-TCP
tcp/ip学习笔记-TCP 彭会锋 报文发送采用的是tcp_output函数,
- TCP/IP学习笔记(3)-IP、ARP、RARP协议
这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数据 ...
- TCP/IP学习笔记(3)----IP,ARP,RARP协议
把这三个协议放到一起学习是因为这三个协议处于同一层(网络层协议),ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP ...
- TCP/IP学习笔记17--TCP-- 窗口控制 重发控制 流控制
事业无穷年 -- 韩愈 利用窗口控制提高速度: TCP传输数据是,以一个段为单位(每次发送一个数据包),每发一个段需要一次确认应答,这样就难免存在这样的缺点:包的往返时间越长,通信性能就越低. 为解决 ...
- TCP/IP学习笔记(2)-数据链路层
数据链路层有三个目的: 为IP模块发送和接收IP数据报. 为ARP模块发送ARP请求和接收ARP应答. 为RARP发送RARP请求和接收RARP应答 ip大家都听说过.至于ARP和RARP,ARP叫做 ...
- tcp/ip学习笔记(1)-基本概念
为什么会有tcp/ip 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样.计 ...
- TCP/IP学习笔记(5)------IP选路
静态IP选路 一个简单的路由表 选路是IP层最重要的一个功能之一.前面的部分已经简单的讲过路由器是通过何种规则来根据IP数据包的IP地址来选择路由.这里就不重复了.首先来看看一个简单的系统路由表. D ...
- TCP/IP学习笔记1--概述,分组交换协议
1.TCP/IP 互联网是由许多独立发展的网络通信技术融合而成的,能够使它们不断融合并实现统一的正式TCP/IP技术,TCP/IP使通信协议的统称. TCP/IP协议模型(Transmission C ...
- TCP/IP学习笔记18--TCP--拥塞控制 (慢开始, 拥塞避免, 快重传和快恢复)
用最多的梦面对未来 -- 李嘉诚 在某段时间,若对网络资源的需求超过了该资源所能提供 ...
- TCP/IP学习笔记16--TCP--特点,数据重发,连接管理,段
TCP充分实现了数据传输时各种控制功能,可以进行丢包时的重发控制,还可以对次序乱掉的包进行顺序控制,这些在UDP中都是没有的.UDP是一种没有复杂控制,提供面向无连接通信服务的一种协议.TCP是面向有 ...
随机推荐
- openStack icehouse for centos6.4 production Env 实战
production Env brief Overview: Management Node: controller.cc 10.114.100.115 Neutron Network Node: ...
- mongoose查询特定时间段文档的方法
db.collection.find({ time:{ "$gte": new Date('2014-01-24'), "$lte":new Date('201 ...
- Git怎样同一时候删除多个仓下的同一个分支
每次下载完代码我们都会在本地通过repo start my_local --all建立分支,这样我们下载的代码在每一个仓下都有一个名叫my_local的分支,有些时候我们因为须要还会建立其它分支,当我 ...
- SQLServer 2008 :error 40 出现连接错误
在与SQLServer建立连接时出现与网络相关的或特定与实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且SQL SERVER已配置允许远程链接.(provide:命名管道提供程序,e ...
- 日常之学习CSS3变形和js函数指针
1,transform变形属性,包括rotate(xxdeg)旋转,translate(x轴px,y轴px)移动,scale(0.5,2)变形(x轴缩小0.5倍,y轴放大2倍),skew(x轴deg, ...
- [原创] ASP.NET WEBAPI 接入微信公众平台 总结,Token验证失败解决办法
首先,请允许我说一句:shit! 因为这个问题不难,但是网上有关 ASP.NET WEBAPI的资料太少.都是PHP等等的. 我也是在看了某位大神的博客后有启发,一点点研究出来的. 来看正题! 1.微 ...
- hdu 5104 Primes Problem(prime 将三重循环化两重)
//宁用大量的二维不用量小的三维 #include <iostream> #include<cstdio> #include<cstring> using name ...
- C# 查找指定名称的控件(转)
请问我知道控件的名称如何得到这个控件对象呢? var button = this.FindName("button1") as Button; Button button = th ...
- ajax联动
1.编写html代码,引入ajax文件 <script type="text/javascript" src="js/ajax.js"></s ...
- HDU2007-平方和与立方和
描述: 给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和. 代码: #include<stdio.h> #include<string.h> #include ...