[Linux]非阻塞模式下socket发送数据

来源:互联网 发布:什么是网络喷子 编辑:程序博客网 时间:2024/05/22 06:59
#include<stdlib.h>#include<stdio.h>#include<netinet/in.h>#include<netinet/tcp.h>#include<netdb.h>#include<sys/socket.h>#include<sys/types.h>#include<unistd.h>#include<fcntl.h>#include<errno.h>#include<string.h>#define BUF_SIZE 1024*128int main(const int argc,char* const argv[]){int socket_fd;struct sockaddr_in name;struct hostent *hostinfo;socket_fd = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);name.sin_family = AF_INET;hostinfo = gethostbyname(argv[1]);if(hostinfo == NULL) return -1;name.sin_addr = *((struct in_addr*)hostinfo->h_addr);name.sin_port = htons(atoi(argv[2]));if(connect(socket_fd,(struct sockaddr*)&name,sizeof(name))==-1) return -2;printf("connect server succss\n");char buf[BUF_SIZE];ssize_t count;for(int i=0;i<BUF_SIZE;++i)buf[i]=(char)(i%256);count=write(socket_fd,buf,BUF_SIZE);printf("in block mode, count = %d\n",count);int sock_flag;int times=0;sock_flag = fcntl(socket_fd,F_GETFL);fcntl(socket_fd,F_SETFL,sock_flag|O_NONBLOCK);count=write(socket_fd,buf,BUF_SIZE);printf("in nonblock mode, count = %d\n",count);close(socket_fd);return 0;}

0 0
原创粉丝点击