Linux TCP网络编程示例 – yasi

http://www.linuxidc.com/Linux/2011-05/35331.htm

代码下载

    #include<sys/types.h>#include<sys/socket.h>#include<arpa/inet.h>#include<netinet/in.h>#include<strings.h>#include<string.h>#include<stdio.h>#include<stdlib.h>#include<errno.h>#include<unistd.h>intmain(intargc,char*argv[]) { intsockfd; charbuffer[1024]; structsockaddr_inserver_addr; intportnumber,nbytes; if(argc!=3){ fprintf(stderr,"Usage:%shostnameportnumber\n\a",argv[0]); exit(1); } if(inet_aton(argv[1],&server_addr.sin_addr)==0){ fprintf(stderr,"thehostipisnotright!"); exit(1); } if((portnumber=atoi(argv[2]))<0){ fprintf(stderr,"Usage:%shostnameportnumber\n\a",argv[0]); exit(1); } //创建套接字if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){ fprintf(stderr,"SocketError:%s\n\a",strerror(errno)); exit(1); } //填充服务器的地址信息server_addr.sin_family=AF_INET; server_addr.sin_port=htons(portnumber); //向服务器发起连接if(connect(sockfd,(structsockaddr*)&server_addr,sizeof(structsockaddr))==-1){ fprintf(stderr,"ConnectError:%s\n\a",strerror(errno)); exit(1); } //连接成功后,从服务器接收信息if((nbytes=read(sockfd,buffer,1024))==-1){ fprintf(stderr,"ReadError:%s\n",strerror(errno)); exit(1); } buffer[nbytes]=’\0′; printf("Ihavereceived:%s\n",buffer); close(sockfd); exit(0); }
    #include<sys/types.h>#include<sys/socket.h>#include<arpa/inet.h>#include<netinet/in.h>#include<strings.h>#include<string.h>#include<stdio.h>#include<stdlib.h>#include<errno.h>#include<unistd.h>intmain(intargc,char*argv[]) { intsockfd,new_fd; structsockaddr_inserver_addr; structsockaddr_inclient_addr; intsin_size,portnumber; charhello[]="Hello!Areyoufine?\n"; if(argc!=2){ fprintf(stderr,"Usage:%sportnumber\a\n",argv[0]); exit(1); } if((portnumber=atoi(argv[1]))<0){ fprintf(stderr,"Usage:%sportnumber\a\n",argv[0]); exit(1); } //创建套接字if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){ fprintf(stderr,"Socketerror:%s\n\a",strerror(errno)); exit(1); } //填充服务器的地址结构bzero(&server_addr,sizeof(structsockaddr_in)); server_addr.sin_family=AF_INET; server_addr.sin_addr.s_addr=htonl(INADDR_ANY); server_addr.sin_port=htons(portnumber); //套接字绑定地址if(bind(sockfd,(structsockaddr*)&server_addr,sizeof(structsockaddr))==-1){ fprintf(stderr,"Binderror:%s\n\a",strerror(errno)); exit(1); } //进入监听状态if(listen(sockfd,5)==-1){ fprintf(stderr,"Listenerror:%s\n\a",strerror(errno)); exit(1); } while(1){ //接收客户端的连接sin_size=sizeof(structsockaddr_in); if((new_fd=accept(sockfd,(structsockaddr*)&client_addr,(socklen_t*)&sin_size))==-1){ fprintf(stderr,"Accepterror:%s\n\a",strerror(errno)); exit(1); } fprintf(stderr,"Servergetconnectionfrom%s\n",inet_ntoa(client_addr.sin_addr)); if(write(new_fd,hello,strlen(hello))==-1){ fprintf(stderr,"Writeerror:%s\n",strerror(errno)); exit(1); } close(new_fd); } close(sockfd); //exit(0);return0; }

一个终端(192.168.1.100)运行server:

./server 8080

另一个终端运行client:

./client 192.168.1.100 8080

server输出:

Server get connection from 10.224.29.62

client输出:

I have received:Hello! Are you fine?

我没有值得分享的感伤爱情故事,

Linux TCP网络编程示例 – yasi

相关文章:

你感兴趣的文章:

标签云: