zoukankan      html  css  js  c++  java
  • udp实现c/s服务器模型

    server

    #include<stdio.h>
    #include<unistd.h>
    #include<sys/socket.h>
    #include<sys/types.h>
    #include<ctype.h>
    #include<strings.h>
    #include<arpa/inet.h>
    #include<string.h>
    
    #define port 8000
    #define buflen 1024
    
    int main(void){
    	int sfd;
    	char buf[buflen];
    	char client_ip[128];
    	socklen_t addrlen;
    	struct sockaddr_in serv_addr ,client_addr;
    	int i;
    	int len ;
    
    	sfd = socket(AF_INET,SOCK_DGRAM,0);
    	bzero(&serv_addr,sizeof(serv_addr));
    	serv_addr.sin_family = AF_INET;
    	serv_addr.sin_port = htons(port);
    	serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    
    	bind(sfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr));
    
    	while(1){
    		addrlen = sizeof(client_addr);
    		len = recvfrom(sfd,buf,sizeof(buf),0,(struct sockaddr*)&client_addr,&addrlen);
    		printf("client ip:%s	 port:%d
    ",inet_ntop(AF_INET,&client_addr.sin_addr.s_addr,client_ip,sizeof(client_ip)),ntohs(client_addr.sin_port));
    
    		for(i = 0;i<len;i++){
    			buf[i] = toupper(buf[i]);
    		}
    
    		sendto(sfd,buf,len,0,(struct sockaddr*)&client_addr,addrlen);
    	}
    	close(sfd);
    	return 0;
    }
    

      client:

    #include<stdio.h>
    #include<unistd.h>
    #include<sys/socket.h>
    #include<sys/types.h>
    #include<ctype.h>
    #include<strings.h>
    #include<arpa/inet.h>
    #include<string.h>
    
    #define port 8000
    #define buflen 1024
    #define IP "127.0.0.1"
    int main(int argc,char* argv[]){
    	int sfd;
    	char buf[buflen];
    	struct sockaddr_in serv_addr;
    	socklen_t addrlen;
    	int i,len;
    
    	sfd = socket(AF_INET,SOCK_DGRAM,0);
    	bzero(&serv_addr,sizeof(serv_addr));
    	serv_addr.sin_family = AF_INET;
    	serv_addr.sin_port = htons(port);
    	inet_pton(AF_INET,IP,&serv_addr.sin_addr.s_addr);
    	//serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    	
    	while(1){
    		fgets(buf,sizeof(buf),stdin);
    		addrlen = sizeof(serv_addr);
    
    		sendto(sfd,buf,strlen(buf),0,(struct sockaddr*)&serv_addr,addrlen);
    
    		len = recvfrom(sfd,buf,sizeof(buf),0,NULL,0);
    		buf[len] = "";
    		printf("%s",buf);
    	}
    	close(sfd);
    
    	return 0;
    }
    

      

  • 相关阅读:
    图灵机器人,web录音实现自动化交互问答
    人工智能初识,百度AI
    flask web 表单验证 WTForms
    websocket的原理
    DBUtils
    【hdu4704】 Sum——费马小定理+快速幂取模
    【hdu3037】Saving Beans——组合数取模
    【SRM15】题解
    【模板】快速幂取模
    【模板】线性筛法求素数
  • 原文地址:https://www.cnblogs.com/yjds/p/9085817.html
Copyright © 2011-2022 走看看