udp向linux服务器发数据,C语言 LINUX 环境下 socket UDP 服务器客户端发送信息

#include #define MAXLINE 1024

#define SERV_PORT 8000

struct MSG_PACK

{

char cmd;

char status;

short int len;

};

struct host

{

char UserName[20];

char Host[20];

char IP[20];

char PassWord [20];

char SubNet[512];

char Mode;

char ConState;

char Pin[20];

char ConTrol;

char RandPassword[10];

};

int main(void)

{

int sockfd;

struct sockaddr_in servaddr, cliaddr;

sockfd = socket(AF_INET, SOCK_DGRAM, 0); /* create a socket */

/* init servaddr */

bzero(&servaddr, sizeof(servaddr));

servaddr.sin_family = AF_INET;

servaddr.sin_addr.s_addr = htonl(INADDR_ANY);

servaddr.sin_port = htons(SERV_PORT);

/* bind address and port to socket */

if(bind(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)) == -1)

{

perror("bind error");

exit(1);

}

do_echo(sockfd, (struct sockaddr *)&cliaddr, sizeof(cliaddr));

close(sockfd);

return 0;

}

void do_echo(int sockfd, struct sockaddr *pcliaddr, socklen_t clilen)

{

int n;

socklen_t len;

char mesg[MAXLINE];

for(;;)

{

len = clilen;

/* waiting for receive data */

n = recvfrom(sockfd, mesg, MAXLINE, 0, pcliaddr, &len);

//mesg[n] ='/0';

printf ("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^n:%d    len=%d/n",n,len);

struct MSG_PACK pocket;

memcpy(&pocket,mesg,sizeof(struct MSG_PACK));

printf("$$$$$$$$$$$$$$/n-----pocket1------->%d/n",pocket.cmd);

printf("-----pocket2------->%d/n",pocket.status);

printf("-----pocket3------->%d/n$$$$$$$$$$$$$$$/n",pocket.len);

struct host sHost2 ;

memcpy(&sHost2 , mesg + sizeof(struct MSG_PACK) , sizeof(struct host));

printf("&&&&&&&&&&&&&&&&&&&&/n-----sHost1------->%s/n",sHost2.UserName);

printf("-----sHost2------->%s/n",sHost2.Host);

printf("-----sHost3------->%s/n",sHost2.IP);

printf("-----sHost4------->%s/n",sHost2.PassWord);

printf("-----sHost5------->%s/n",sHost2.SubNet);

printf("-----sHost6------->%d/n",sHost2.Mode);

printf("-----sHost7------->%d/n",sHost2.ConState);

printf("-----sHost8------->%s/n",sHost2.Pin);

printf("-----sHost9------->%d/n",sHost2.ConTrol);

printf("-----sHost10------->%s/n&&&&&&&&&&&&&&&&&&&&/n",sHost2.RandPassword);

/* sent data back to client */

n = sendto(sockfd, mesg, n, 0, pcliaddr, len);

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值