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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

TCP/UDP 网络编程实例

發布時間:2023/12/10 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TCP/UDP 网络编程实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
TCP服務器: TCP_Server.c

#include<stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <netinet/in.h>
#include <sys/socket.h>

#define PORTNUMBER 3333

int main(int argc,char*argv[])
{
????int sockfd,new_fd;
????struct sockaddr_in server_addr;
????struct sockaddr_in client_addr;
????int sin_size;
????int nbytes;
????char buffer[1024];

????//socket

????if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
????{
????????fprintf(stderr,"Socket error:%s\n",strerror(errno));
????????exit(1);
??? }
????//address

????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);

????//bind

????if(bind(sockfd,(structsockaddr *)(&server_addr),sizeof(structsockaddr_in))==-1)
????{
????????fprintf(stderr,"Bind error:%s\n",strerror(errno));
????????exit(1);
????}

????//listen

????if(listen(sockfd,5)==-1)
????{
????????fprintf(stderr,"Listen error:%s\n",strerror(errno));
????????exit(1);
????}

????while(1)
????{
????????sin_size=sizeof(structsockaddr_in);
?if((new_fd=accept(sockfd,(structsockaddr *)(&client_addr),&sin_size))==-1)
????????{
????????????fprintf(stderr,"Accept error:%s\n",strerror(errno));
????????????exit(1);
????????}
????????fprintf(stderr,"Server get connection from %s\n",inet_ntoa(client_addr.sin_addr));

????????if((nbytes=read(new_fd,buffer,1024))==-1)
????????{
????????????fprintf(stderr,"Read Error:%s\n",strerror(errno));
????????????exit(1);
????????}
????????buffer[nbytes]='\0';
????????printf("Server received %s\n",buffer);
????????close(new_fd);
????}
}

?

TCP客戶端:

TCP_client.c?

#include<stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>

#define PORTNUMBER 3333

int main(int argc,char*argv[])
{
????int sockfd;
????char buffer[1024];
????struct sockaddr_in server_addr;
????struct hostent*host;

????//使用hostent查詢host name

????if(argc!=2)
????{
????????fprintf(stderr,"Uage:%s hostname\a\n",argv[0]);
????????exit(1);
????}

????if((host=gethostbyname(argv[1]))==NULL)
????fprintf(stderr,"Gethostname error\n");
????????exit(1);
????}

????//socket

????if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
????{
????????fprintf(stderr,"Socket Error:%s\a\n",strerror(errno));
????????exit(1);
????}

????//ip port

????bzero(&server_addr,sizeof(server_addr));
????server_addr.sin_family=AF_INET;
????server_addr.sin_port=htons(PORTNUMBER);
????server_addr.sin_addr=*((structin_addr *)host->h_addr);

????//connect

????if(connect(sockfd,(structsockaddr *)(&server_addr),sizeof(structsockaddr_in))==-1)
????{
????????fprintf(stderr,"Connect error:%s\a\n",strerror(errno));
????????exit(1);
????}

????printf("Please input char:\n");
??? fgets(buffer,1024,stdin);
????write(sockfd,buffer,strlen(buffer));

????close(sockfd);
????exit(0);
}


--------------**************分割線***************-------------------

UDP服務器:

udp_server.c

? 1 #include <stdlib.h>
??2 #include<stdio.h>
??3 #include<errno.h>
??4 #include<string.h>
??5 #include<unistd.h>
??6 #include<netdb.h>
??7 #include<sys/socket.h>
??8 #include<netinet/in.h>
??9 #include<arpa/inet.h>
?10 #include<sys/types.h>
?11
?12 #define SERVER_PORT 8888
?13 #define MAX_MSG_SIZE 1024
?14
?15 void udps_respon(int sockfd)
?16 {
?17??? struct sockaddr_in addr;
?18??? int addrlen,n;
?19??? char msg[MAX_MSG_SIZE];
?20
?21?? ?while(1)
?22??? {
?23???? ?bzero(msg,sizeof(msg));
?24????? addrlen=sizeof(structsockaddr);
?25????? n=recvfrom(sockfd,msg,MAX_MSG_SIZE,0,(structsockaddr *)&addr,&addrlen);
?26????? msg[n]='\0';
?27????? fprintf(stdout,"Server have received %s",msg);
?28??? }
?29 }
?30
?31
?32 int main(void)
?33 {
?34??? int sockfd;
?35??? struct sockaddr_in addr;
?36
?37 //socket

?38??? sockfd=socket(AF_INET,SOCK_DGRAM,0);
?39??? if(sockfd<0)
?40??? {
?41?????? fprintf(stderr,"Socket Error:%s\n",strerror(errno));
?42?????? exit(1);
?43??? }
?44
?45 //ip port
?46??? bzero(&addr,sizeof(structsockaddr_in));
?47??? addr.sin_family=AF_INET;
?48??? addr.sin_addr.s_addr=htonl(INADDR_ANY);
?49?? ?addr.sin_port=htons(SERVER_PORT);
?50
?51 //bind

?52??? if(bind(sockfd,(structsockaddr *)&addr,sizeof(structsockaddr_in))<0)
?53??? {
?54?????? fprintf(stderr,"Bind Error:%s\n",strerror(errno));
?55?????? exit(1);
?56??? }
?57??? udps_respon(sockfd);
?58??? close(sockfd);
?59 }

?

UDP客戶端:

udp_client.c?

? 1 #include <stdlib.h>
??2 #include<stdio.h>
??3 #include<errno.h>
??4 #include<string.h>
??5 #include<netdb.h>
??6 #include<sys/types.h>
??7 #include<arpa/inet.h>
??8 #include<sys/socket.h>
??9
?10 #define SERVER_PORT 8888
?11 #define MAX_BUF_SIZE 1024
?12
?13 void udpc_requ(int sockfd,conststruct sockaddr_in*addr,int len)
?14 {
?15??? char buffer[MAX_BUF_SIZE];
?16?? ?int n;
?17??? while(1)
?18?? ?{
?19?????? printf("please input char:\n");
?20?????? fgets(buffer,MAX_BUF_SIZE+1,stdin);
?21?????? sendto(sockfd,buffer,strlen(buffer),0,(structsockaddr *)addr,len);
?22?????? bzero(buffer,MAX_BUF_SIZE);
?23??? }
?24 }
?25
?26
?27 int main(int argc,char**argv)
?28 {
?29??? int sockfd;
?30?? ?struct sockaddr_in addr;
?31??? struct hostent*host;
?32
?33??? if(argc!=2)
?34??? {
?35?????? fprintf(stderr,"Usage:%s server_ip\n",argv[0]);
?36?????? exit(1);
?37??? }
?38
?39??? if((host=gethostbyname(argv[1]))==NULL)
?40??? {
?41?????? fprintf(stderr,"Gethostname error\n");
?42?????? exit(1);
?43??? }
?44
?45 //socket

?46?? ?sockfd=socket(AF_INET,SOCK_DGRAM,0);
?47??? if(sockfd<0)
?48??? {?
?49?????? fprintf(stderr,"Socket Error:%s\n",strerror(errno));
?50?????? exit(1);
?51??? }
?52
?53 //ip port

?54??? bzero(&addr,sizeof(structsockaddr_in));
?55??? addr.sin_family=AF_INET;
?56??? addr.sin_port=htons(SERVER_PORT);
?57??? /* if(inet_aton(argv[1],&addr.sin_addr)<0)
?58??? {
?59??? fprintf(stderr,"IP error:%s\n",strerror(errno));
?60??? exit(1);
?61??? } */

?62??? addr.sin_addr=*((structin_addr *)host->h_addr);
?63?
?64
?65??? udpc_requ(sockfd,&addr,sizeof(structsockaddr_in));
?66??? close(sockfd);
?67 }

總結

以上是生活随笔為你收集整理的TCP/UDP 网络编程实例的全部內容,希望文章能夠幫你解決所遇到的問題。

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