日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Simple TCP Server Client Socket C

發布時間:2023/12/9 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Simple TCP Server Client Socket C 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載鏈接:http://blog.163.com/caipeipei_love@126/blog/static/2596603220101118433940/


tcpserver.c

#include<stdlib.h> #include<stdio.h> #include<errno.h> #include<string.h> #include<netdb.h> #include<sys/types.h> #include<netinet/in.h> #include<sys/socket.h> #include<unistd.h> #include<arpa/inet.h> #define portnumber 8080 int main(int argc ,char *argv[]) {int sockfd,new_fd;struct sockaddr_in server_addr;struct sockaddr_in client_addr;int sin_size,iDataNum; // const char hello[]="Hello cpp, you are success.\n";char buffer[4096];if(argc!=2){fprintf(stderr,"Usage:%s portnumber\a\n",argv[0]);return 0;}// if((portnumber=atoi(argv[1]))<0)// {// fprintf(stderr,"Usage:%s portnumber\a\n",argv[0]); // return 0;// }if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){fprintf(stderr,"Socket error:%s\n\a",strerror(errno));return 0;}bzero(&server_addr,sizeof(struct sockaddr_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,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1){fprintf(stderr,"Bind error:%s\n\a",strerror(errno));return 0;}if(listen(sockfd,5)==-1){fprintf(stderr,"Listen error:%s\n\a",strerror(errno));return 0;}while(1){sin_size=sizeof(struct sockaddr_in);if((new_fd=accept(sockfd,(struct sockaddr *)(&client_addr),&sin_size))==-1){fprintf(stderr,"Accept error:%s\n\a",strerror(errno));return 0;}fprintf(stdout,"Server get connection from %s\n",inet_ntoa(client_addr.sin_addr));iDataNum=recv(new_fd,buffer,4096,0);if(iDataNum<0){perror("Recv\n");exit(1);}printf("Recv data is %s\n",buffer);send(new_fd,buffer,sizeof(buffer),0); // if(write(new_fd,hello,strlen(hello))==-1) // { // fprintf(stderr,"write error:%s\n",strerror(errno)); // return 0; // }close(new_fd);}close(sockfd);// exit(0);return 0; }
tcpclient.c

#include<stdlib.h> #include<stdio.h> #include<string.h> #include<netdb.h> #include<sys/types.h> #include<netinet/in.h> #include<sys/socket.h> #include<unistd.h> #include<arpa/inet.h> #include<errno.h>int main(int argc,char *argv[]) {int sockfd;char sendbuffer[200];char recvbuffer[200];// char buffer[1024];struct sockaddr_in server_addr;struct hostent *host;int portnumber,nbytes;if(argc!=3){fprintf(stderr,"Usage :%s hostname portnumber\a\n",argv[0]);exit(1);}if((host=gethostbyname(argv[1]))==NULL){herror("Get host name error\n");exit(1);}if((portnumber=atoi(argv[2]))<0){fprintf(stderr,"Usage:%s hostname portnumber\a\n",argv[0]);exit(1);}if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){fprintf(stderr,"Socket Error:%s\a\n",strerror(errno));exit(1);}bzero(&server_addr,sizeof(server_addr));server_addr.sin_family=AF_INET;server_addr.sin_port=htons(portnumber);server_addr.sin_addr=*((struct in_addr *)host->h_addr);if(connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1){fprintf(stderr,"Connect error:%s\n",strerror(errno));exit(1);}while(1){printf("Please input your word:\n");scanf("%s",sendbuffer);printf("\n");if(strcmp(sendbuffer,"quit")==0)break;send(sockfd,sendbuffer,sizeof(sendbuffer),0);recv(sockfd,recvbuffer,200,0);printf("recv data of my world is :%s\n",recvbuffer);}// if((nbytes=read(sockfd,buffer,1024))==-1)//{ // fprintf(stderr,"read error:%s\n",strerror(errno)); // exit(1);// }// buffer[nbytes]='\0';// printf("I have received %s\n",buffer);close(sockfd);exit(0); }

首先要編譯tcpserver.c,命令:

gcc -g tcpserver.c -o tcpserver

./tcpserver 8080

然后再編譯tcpclient.c,具體命令:

gcc -g tcpclient.c -o tcpclient

./tcpclient localhost 8080


總結

以上是生活随笔為你收集整理的Simple TCP Server Client Socket C的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。