博客專欄

        EEPW首頁 > 博客 > Linux網(wǎng)絡編程UDP:服務器與客戶端之間的相互發(fā)送/接收(一)

        Linux網(wǎng)絡編程UDP:服務器與客戶端之間的相互發(fā)送/接收(一)

        發(fā)布人:電子禪石 時間:2024-10-29 來源:工程師 發(fā)布文章
        #include <stdio.h>        
        #include <sys/socket.h>
        #include <sys/types.h>     
        #include <sys/socket.h>
        #include <arpa/inet.h>
        #include <string.h>
        
        #define MAX_SEN 	200
        #define MAX_REC		200
        #define SERADDR 	"192.168.1.11"  
        #define SERPORT 	8000
        
        int main(void)
        {
        	int c_fd = -1, num = 0;
        	char cli_senbuf[MAX_SEN] = "abcdefg";  
        	char cli_recbuf[MAX_REC];
        	
        	struct sockaddr_in sin = {0}; 
        	struct sockaddr_in cin = {0}; 
        	socklen_t addr_len;
        	
        	c_fd = socket(AF_INET, SOCK_DGRAM, 0);
        	if ( -1 == c_fd)
        	{
        		perror("socket");
        		return -1;
        	}
        	printf("c_fd = %d.\n", c_fd);
        
        	sin.sin_family = AF_INET;		
        	sin.sin_port = htons(SERPORT);	
        	inet_pton(AF_INET, SERADDR, &sin.sin_addr);
        
        	num = sendto(c_fd, cli_senbuf, strlen(cli_senbuf), 0, (const struct sockaddr *)&sin, sizeof(sin));  
        	printf("客戶端成功發(fā)送了%d個字符\n", num);	
        	printf("客戶端發(fā)送的內容是:%s\n", cli_senbuf);
        
        	
        	num = recvfrom(c_fd, cli_recbuf, MAX_REC, 0, (struct sockaddr *)&cin, &addr_len);
        	printf("客戶端成功接收了%d個字節(jié)\n", num);
        	printf("客戶端接收的內容是:%s\n", cli_recbuf);
        	
        	return 0;
        }

        server.c


        #include <stdio.h>
        #include <sys/socket.h>
        #include <sys/types.h>         
        #include <sys/socket.h>
        #include <arpa/inet.h>
        #include <string.h>
        
        
        #define MAX_SEN 	200
        #define MAX_REC		200
        #define SERPORT 	8000
        
        int main(void)
        {
        	int s_fd = -1, ret = -1;
        	char ser_senbuf[MAX_SEN] = "hello"; 
        	char cli_recbuf[MAX_REC]; 
        	
        	struct sockaddr_in ser_sin = {0};  
        	struct sockaddr_in ser_cin = {0};   
        	socklen_t addr_len;
            char ipbuf[INET_ADDRSTRLEN];
        	
        	s_fd = socket(AF_INET,SOCK_DGRAM,0);
        	if (s_fd == -1 )
        	{
        		perror("socket");
        		return -1;
        	}
        	printf("s_fd = %d.\n", s_fd);
        		
        	bzero(&ser_sin,sizeof(ser_sin)); 
        	ser_sin.sin_family = AF_INET;		
        	ser_sin.sin_addr.s_addr = INADDR_ANY;
        	ser_sin.sin_port = htons(SERPORT);	
        	ret = bind(s_fd, (const struct sockaddr *)&ser_sin, sizeof(ser_sin));  
        	if (ret < 0)
        	{
        		perror("bind");
        		return -1;
        	}
        	printf("bind success.\n");
        
            addr_len = sizeof(ser_cin);
            ret = recvfrom(s_fd, cli_recbuf, MAX_REC, 0, (struct sockaddr *)&ser_cin, &addr_len);
            printf("服務器成功接收了%d個字節(jié)\n", ret);
        	printf("服務器接收的內容是:%s\n", cli_recbuf);
            
        	inet_ntop(AF_INET, &ser_cin.sin_addr, ipbuf,sizeof(ipbuf));
        	printf("ip地址是:%s\n", ipbuf);
        		
        	ret = sendto(s_fd, ser_senbuf, strlen(ser_senbuf), 0, (const struct sockaddr *)&ser_cin, addr_len); 
        	printf("服務器成功發(fā)送了%d個字符\n", ret);	
        	printf("服務器發(fā)送的內容是:%s\n", ser_senbuf);
         
        	return 0;
        }


        *博客內容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。



        關鍵詞: udp

        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 醴陵市| 铜梁县| 岳阳县| 宕昌县| 嘉兴市| 连云港市| 津南区| 阳江市| 临城县| 象山县| 黄石市| 叙永县| 岚皋县| 安康市| 岗巴县| 凤冈县| 洛浦县| 六枝特区| 桐柏县| 商丘市| 资溪县| 阿拉善右旗| 宝清县| 石城县| 黄浦区| 青田县| 霍州市| 开阳县| 长宁区| 新龙县| 凉山| 东山县| 雷山县| 依安县| 岳阳市| 浪卡子县| 武清区| 凌源市| 克东县| 正阳县| 分宜县|