首页 > 代码库 > linux编程---网络编程1

linux编程---网络编程1

主干部分

服务器端:socket—>bind—>listen—>accept—>close;

客户端:   socket—>connect—>close;

按照上面建立连接后,就是进行数据的传输了。。。。

涉及主干函数如下:

socket函数用于创建套接字文件标识号;

bind函数用于套接字和地址的绑定;

listen函数用于监听该套接字

accept函数用于等待客户端连接请求;

connect函数向服务器申请请求。

具体函数解说

image

socket成功返回该套接字的文件标示符;失败返回-1;

参数:domain表示本机采用的协议族:例如AF_INET表示internet网络协议族;AF_UNIX表示系统unix的进程通信协议族

         type表示具体协议SOCK_STREAM表示TCP协议,SOCK_DGRAM表示UDP协议

         protocal表示也是指定具体协议的,如果type指定了则为0;

上诉参数的值都是通过宏给出的;

 

image

bind成功则返回0;失败-1;将本地端口绑定到该socket字上。

参数:sockfd表示由socket函数产生的套接字标识号;

        my_addr表示本地端口信息;后一个参数就是该类型长度;

sockaddr结构:linux/socket.h头文件

image

as_family表示协议族;

sa_data 表示具体地址;

sockaddr_in结构体:linux/in.h头文件

image

sin_family表示协议族;sin_port表示要监听的端口;sin_addr表示吧本机可以和哪些主机通信若为INADDR_ANY表示任何

 

image

listen函数将套接字变成监听套接字;成功为0;失败-1

参数:sockfd表示已经绑定的套接字;

        backlog表示多个客户端时用它来表示最多有个多套接字可以被同时监听

 

image

accept函数表示等待客户端请求;成功则放回已经接受到了客户端请求后的套接字标识号;

参数:sockfd表示已经监听的套接字;

         addr表示请求连接客户端的地址信息;后一个是该信息大小

 

image

connect函数表示客户端向服务端请求连接,成功则为0,失败为-1

参数:sockfd表示客户端产生的套接字;

        serv_addr表示服务器的地址信息;后一个是该结构的大小;

 

image

write函数用于写信息,写入到fd中;

image

read函数用于读取fd信息;

 

 

信息辅助函数

image

此类是字节转换函数:

函数字母含义:h表示机器host;n表示网络;s表示short;l表示long

这里需要字节转换主要是不同机器的字节顺序是不一样的,所以通过统一网络的字节顺序,从而能沟通不同机器的通信。

 

image

此类函数为IP与域名的转换:

第一个是将域名转为网络可识别的机器结构指针;第二是将IP形式的转换;

关键点是返回的结构体hostent---netdb.h头文件

image

 

image

此类函数为字符IP转为32位IP--字符串与in_addr结构体互相转换

 

image

此类函数目的是获取服务器信息:

服务器结构体如下:

image

---------------------------------------------------我是分割线-----------上述为TCP基础上讲解的-----------------------

UDP中的通信函数:

服务器端:socket—>bind—>close;

客户端:   socket—>close;

image

这两个函数是UDP中关键函数

第一个表示接受数据函数:

参数:sockfd表示接受收数据的套接字;

        buf:表示接受数据的指针;

        len:数据大小;

        flags:如下解释

image

         from:是来源的地址信息

         fromlen:表示from的大小;

第二个函数表示发送函数:

         参数很第一个相似;----

---------------------------------------------------我是分割线-----------上述为UDP讲解的-----------------------

高级函数:

image

前3个参数与之前的write和read一样;最后一个参数取值如下:可以组合

image

 

 

image

UDP协议中接收地址用的;

image

TCP中关闭通道控制,

---------------------------------------------------我是分割线----------------------------------

IP/TCP协议数据格式:

IP协议:

image

ICMP协议:

image

UDP协议:

image

TCP协议:

image

linux编程---网络编程1