Chinaunix首页 | 论坛 | 博客
  • 博客访问: 132501
  • 博文数量: 44
  • 博客积分: 956
  • 博客等级: 准尉
  • 技术积分: 521
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-18 12:45
文章分类
文章存档

2012年(11)

2011年(33)

分类: C/C++

2012-01-10 18:11:09

流式套接字:SOCK_STREAM(TCP)
数据包套接字:SOCK_DGRAM(UDP)
原始套接字:SOCK_RAW(直接访问网络层协议)

int inet_aton(const char *strptr, struct in_addr *addrptr);
in_addr_t inet_addr(const char *strptr);
char *inet_ntoa(struct in_addr addr);

u_long htonl(u_long hostlong);
u_short htons(u_short hostshort);

u_long ntohl(u_long netlong);
u_short ntohs(u_short netshort);



int sock_fd socket(int domain, int type, int protocol);
domain: PF_INET(网络通信)
PF_UNIX(本地通信)
type:SOCK_STREAM,SOCK_DGRAM, SOCK_RAW
protocal:0,当type为SOCK_RAW是传入协议编号

int bind(int sock_fd, struct sockaddr *my_addr, int addrlen);

struct sockaddr {
u_short sa_family;
char sa_data[14];
};

struct sockaddr_in{
u_short sin_family;//AF_INET
u_short sin_port;//端口号 htons(short);
struct in_addr sin_addr;//IPv4地址
char sin_zero[8];
}
myaddr.sin_addr.s_addr = inet_addr("192.168.1.100");

int listen(int sockfd, int backlog);
backlong:可接受的最大数目

int accept(int sockfd, struct sockaddr *addr(保存对方地址), socklen_t *addrlen(对方地址的长度,必须初始化));
若不需要对方地址,后两个NULL, 
返回新的描述符

int connect(int sockfd, struct sockaddr *serv_addr, int addrlen);

ssize_t send(int sockfd, const void *buff, size_t siez, int flags);
int flags:发送方式,默认阻塞,传0
ssize_t recv(int sockfd, const void *buff, size_t size, int flags);
int flags:0
int close(int sockfd);
int shutdown(int sockfd, int how);
how: 0关闭读通道
1关闭写
2:读写都关闭,相当于close
阅读(1223) | 评论(0) | 转发(0) |
0

上一篇:IPC之信号灯(23)

下一篇:网络编程UDP(25)

给主人留下些什么吧!~~