1、使用的函数:socket、concect、bind、listen、accept;
2、bind函数把一个本地协议地址赋给一个套接口,进程可以把一个特定的IP地址捆绑到它的套接口上,不过这个IP地址必须属于其所在的主机的网络接口之一,对于TCP客户,这就为在该接口上发送的IP数据报指定了源IP地址,对于TCP服务器,这就限定该套接口只接受那些的目的地为这个IP地址的客户连接。
TCP客户通常不把IP地址捆绑到它的套接口上,当连接套接口时内核将根据所用外出网络接口来选择IP地址,而所用外出接口则取决于到达服务器所需要的路径。
如果TCP服务器没有把IP地址捆绑到它的套接口上,内核就把客户发送的SYN的宿IP地址作为服务器的源IP地址。即服务器捆绑统配地址(INADDR_ANY),则等待listen状态,等待连接,一旦建立连接,则内核设定连接的IP,若服务器捆绑了IP地址的话,则只能接受这个特定的IP的连接。
3、
#include<sys/socket.h> int getsockname(int sockfd, struct sockaddr *localaddr, socklen_t *addrlen) int getpeername(int sockfd, sreuct sockaddr *peeraddr,socklen_t addrlen) /*这两个函数或者返回与某个套接口关联的本地协议地址(getsockname),或者返回与某个套接口关联的远地协议地址。 这两个函数的最后一个参数都是值--结果参数,这就是说,这两个函数都得装填由localaddr或者peeraddr指针所致的套接口地址结构。*/
4、readn/writen和recv/send函数的区别
1、recv和send函数提供了和read和write差不多的功能。但是他们提供了第四个参数来控制读写操作.
int recv(int sockfd,void *buf,int len,int flags)
int send(int sockfd,void *buf,int len,int flags)
前面的三个参数和read,write相同,第四个参数能够是0或是以下的组合:
_______________________________________________________________
| MSG_DONTROUTE | 不查找路由表 |
| MSG_OOB | 接受或发送带外数据 |
| MSG_PEEK | 查看数据,并不从系统缓冲区移走数据 |
| MSG_WAITALL | 等待任何数据 |
|————————————————————–|
如果flags为0,则和read,write一样的操作。
2、在unix中,所有的设备都可以看成是一个文件,所以我们可以用read来读取socket数据。
更多嵌入式linux及编程学习交流的文章,请访问我的个人网站”恩享网” :http://www.enxiang.icoc.cc,期待与您共同进步。