Linux网络编程(TCP和UDP)

一、TCP的编程

TCP服务器:

头文件:sys/types.h   sys/socket.h

1、创建套接字:int socket(int domain,int type,int protocol)

第一个参数:IPv4使用AF_INET ;第二个参数:TCP使用SOCK_STREAM;第三个参数:0表示选择默认协议。

2、绑定套接字:int bind(int sockfd,const struct sockaddr *addr,socklen_t addrlen);

第一个参数sockfd为创建的套接字,第二个参数为绑定的参数,第三个参数为addr的长度

一般使用struct sockaddr_in代替struct sockaddr,初始化如下:

struct sockaddr_in addr;

addr.sin_family=AF_INET;

addr.sin_addr.s_addr=htonl(INADDR_ANY);//接收所有的连接

addr.sin_port=htons(5000);  //绑定的端口号

3、设置套接字监听:int listen(int sockfd,int backlog)

backlog为连接请求队列的最大长度

4、接收连接 int accept(in sockfd,struct sockaddr *addr,socklen_t *addrlen)

5、发送和接收信息:(也可以用read和write)

ssize_t send(int sockfd,const void *buf,size_t len,int flags)

ssize_t recv(int sockfd,void *buf,size_t len,int flags)

flags一般为0;

recv的flags值:MSG_DONTWAIT仅本操作非阻塞;MSG_OOB发送或接收带外数据;MSG_PEEK窥看外来消息;MSG_WAITALL等待所有数据

send的flags值:MSG_DONTROUTE绕过路由表查找;MSG_DONTWAIT仅本操作非阻塞;MSG_OOB发送或接收带外数据

6、关闭套接字 int close(int fd)  头文件unistd.h


TCP客户端:

1、创建套接字

2、连接服务器:int connect(int sockfd,const struct sockaddr *addr,socklen_t addrlen)

3、发送和接收数据:(recv和send)

4、关闭套接字


二、UDP的编程

UDP服务器:

1、创建套接字:第二个参数为SOCK_DGRAM

2、绑定套接字

3、发送和接收数据(recvfrom和sendto)

ssize_t recvfrom(int sockfd,void *buf,size_t len,int flags,struct sockaddr *src_addr,socklen_t *addrlen)

ssize_t sendto(int sockfd,const void *buf,size_t len,int flags,struct sockaddr *dest_addr,socklen_t *addrlen)

4、关闭套接字(close)


UDP客户端:

1、创建套接字

2、发送和接收数据:服务器的参数放到函数sendto的参数中

3、关闭套接字

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值