专栏中心

EEPW首页 > 专栏 > Linux网络编程UDP:服务器与客户端之间的相互发送/接收(一)

Linux网络编程UDP:服务器与客户端之间的相互发送/接收(一)

发布人:电子禅石 时间:2024-10-29 来源:工程师 发布文章
#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("客户端成功发送了%d个字符\n", num);	
	printf("客户端发送的内容是:%s\n", cli_senbuf);

	
	num = recvfrom(c_fd, cli_recbuf, MAX_REC, 0, (struct sockaddr *)&cin, &addr_len);
	printf("客户端成功接收了%d个字节\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个字节\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("服务器成功发送了%d个字符\n", ret);	
	printf("服务器发送的内容是:%s\n", ser_senbuf);
 
	return 0;
}


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

关键词: udp

相关推荐

UDP数据报与TCP传输应用系统的层间接口设计

详解TCP协议三次握手全过程

网络与存储 2018-01-25

基于LabVIEW FPGA的数据传输技术

2020-03-30

局域网UDP收发程序

小型无人机交通辅助系统

国嵌应用班-7-4(UDP网络程序设计)

视频 2013-11-06

GSMGPRS通信在配电自动化系统中的应用

基于FPGA和Qt技术的音频广播系统

消费电子 2014-08-26

TCP UDP测试工具

资源下载 2007-03-30

LabViewFPGA数据传输技术

2019-12-24

TCP UDP通用测试软件

声纳信号处理中UDP协议数据传输研究与设计

FPGA平台的实时全景视频系统设计

模拟技术 2013-03-06

VHDL语言_用户定义的原语(第六章)

资源下载 2007-03-20

基于FPGA的UDP硬件发送模块设计与实现

更多 培训课堂
更多 焦点
更多 视频

技术专区