• 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;
    }
    

      

  • 相关阅读:
    搜索算法总结
    浅谈cocosd之autorelease etain elease的理解
    lua和C++的交互(1)
    Unity相对于Cocos2d-x的比较
    Lua弱表Weak table
    socket编程学习step2
    ppt述职摘要
    LuaJavaBridge
    鱼书学习小结(一)
    网络协议HTTP TCP/UDP 浏览器缓存 Restful(十)
  • 原文地址:https://www.cnblogs.com/yjds/p/9085817.html
Copyright © 2020-2023  润新知