- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux网络编程学习总结课件
Linux网络编程学习总结
Linux网络编程学习总结 1
目录 3
一、socket结构 3
1. struct sockaddr通用套接字 3
2. struct sockaddr_in 实际使用套接字 3
二、socket类型 4
1. SOCK_STREAM 4
2. SOCK_DGRAM 4
3. SOCK_RAM 4
三 4
1. 服务器客户端交互 4
2. 服务器函数 5
1) socket() 5
2) bind() 6
3) listen() 7
4) accept() 7
5) send()/write() 8
6) recv()/read() 9
7) close() 9
3. 客户端函数 10
1) socket() 10
2) connect() 10
3) send() 10
4) recv() 11
5) close() 11
四 11
1. 服务器接收/发送 11
2. 客户端接收/发送 12
3. Makefile编写 14
4. 线程 14
1) 线程创建pthread_create() 14
2) pthread_join() 15
3) pthread_exit() 15
5. 使用到的其他函数 15
1) htonl()/htons() 16
2) fork() 16
3) inet_pton() 16
目录
学习Linux网络编程也有一段时间,在吕同学和乔老师的帮助下写了一个服务器与客户端之间收发消息的例子,下面就主要用到的知识点作一回顾和总结。
一、socket结构
struct sockaddr通用套接字
struct sockaddr
{
u_short sa_family; //协议簇
char sa_data[14]; //14字节的特定协议地址
}
struct sockaddr_in 实际使用套接字
struct sockaddr_in
{
u8 sin_len; /*struct sockaddr_in 的长度16*/
u8 sin_family;/*AF_INET*/
u16 sin_port;/*16位端口号*/
struct in_addr sin_addr;/*IP地址32位*/
char sin_zero[8];
}
struct in_addr结构:
struct in_addr
{
u32 s_addr; //32位IP地址,网络字节序
}
二、socket类型
SOCK_STREAM:流式套接字可以提供可靠的、面向连接的通讯流,使用TCP协议。
SOCK_DGRAM:数据报套接字定义了一种无连接的服务,数据报通过相互独立的报文进行传输,是无序的并且不保证可靠,使用UDP协议。
SOCK_RAM:原始套接字使用IP协议,用于新的网络协议的测试。
TCP网络编程架构
服务器客户端交互
图一
服务器函数
socket()
#include sys/types.h
#include sys/socket.h
int socket(int domain, int type, int protocol);
创建一个socket,返回值:非负数-----创建成功,-1-------创建失败?
family:协议簇
type:套接字的类型:是流式套接字?数据报套接字还是原始套接字
protocol: 套接口所用的协议。如调用者不想指定,可用?0
其返回值:调用成功就返回新创建的套接字的描述符,如果失败就返回INVALID_SOCKET。?
绑定一个地址端口bind()
int bind(int sockfd,const struct sockaddr *myaddr,socklen_t addrlen);?
用于绑定Ip地址和端口号到socket
socket:是一个套接字。 address:是一个sockaddr结构指针,该结构中包含了要结合的地址和端口号。
address_len:确定缓冲区的长度。
其返回值:如果函数执行成功,返回值为0,否则为SOCKET_ERROR。
bind()
int bind(int sockfd,const struct sockaddr *myaddr,socklen_t addrlen);
该函数用于绑定I地址和端口号到socket:是一个套接字
myaddr:是一个sockaddr结构指针,该结构中包含了要结合的地址和端口号addr_len:确定缓冲区的长度如果函数执行成功,返回值为0,否则为SOCKET_ERROR
文档评论(0)