udp socket 通信案例

2019-01-19 10:48

#include #include #include #include #include #include #include #include #define NOR 3 #define QUIT 2 #define LOG 1

typedef struct node {

struct sockaddr_in addrc; struct node *next; }linknode,*linklist;

typedef struct { int type;

char name[20]; char buf[1024];

}message;

linklist CREAT();

int main(int argc, char *argv[]) {

message msg; int sockfd; socklen_t slen;

struct sockaddr_in addrs,addrc; linklist h,p,q;

h=CREAT();

if ((sockfd = socket (PF_INET,SOCK_DGRAM,0))<0) {

perror(\ exit(-1); }

memset(&addrs,0,sizeof(addrs)); addrs.sin_family = PF_INET;

addrs.sin_addr.s_addr = inet_addr(\ addrs.sin_port = htons(8888);

if (bind(sockfd,(struct sockaddr *)&addrs,sizeof(addrs)) <0 ) {

perror(\ exit(-1);

}

while(1) {

slen = sizeof(addrc);

recvfrom (sockfd,&msg,sizeof(msg),0,(struct sockaddr *)&addrc,&slen); printf(\ if (msg.type == LOG) {

linklist m; m = h->next; p=CREAT(); h->next=p; p->next=m;

p->addrc = addrc;

printf(\

from %s %d\\n\

q=h->next;

while (q!=NULL) {

strcpy(msg.buf,msg.name); strcat(msg.buf,\

sendto(sockfd,&msg,sizeof(msg),0,(struct *)&q->addrc,sizeof(q->addrc));

q=q->next;

}

}

sockaddr

if (msg.type == NOR) {

q=h->next; while(q!=NULL) {

sendto(sockfd,&msg,sizeof(msg),0,(struct sockaddr *)&q->addrc,sizeof(q->addrc)); q=q->next; } }

if(msg.type == QUIT) {

strcpy(msg.buf,\

sendto(sockfd,&msg,sizeof(msg),0,(struct sockaddr *)&addrc,sizeof(addrc));

delete(addrc,h);

strcpy(msg.buf,msg.name); strcat(msg.buf,\ q=h->next;

while(q!=NULL) {

sendto(sockfd,&msg,sizeof(msg),0,(struct sockaddr *)&q->addrc,sizeof(q->addrc)); q=q->next; } } }

return 0; }

linklist CREAT() {

linklist p;

p=(linklist)malloc(sizeof(linknode)); p->next=NULL;

return p; }

int delete(struct sockaddr_in addrc,linklist ls) {

linklist m,n,p; m=ls->next; p=ls;

if (memcmp(&m->addrc,&addrc,sizeof(addrc))==0) {

n=m->next; p->next=n; free(m); }

m=m->next; p=p->next; }

#include #include #include #include #include #include #include #include #include #define LOG 1 #define NOR 3 #define QUIT 2

typedef struct {

int type;

char name[20];

char buf[1024];

}message;

int main(int argc,char *argv[]) {

message msg,def; pid_t pid; pid_t ppid; int sockfd;

struct sockaddr_in addrs;

if ((sockfd = socket (PF_INET,SOCK_DGRAM,0))<0) {

perror(\ exit(-1); }

memset(&addrs,0,sizeof(addrs)); addrs.sin_family = PF_INET;

addrs.sin_addr.s_addr = inet_addr(argv[1]); addrs.sin_port = htons(atoi(argv[2]));

/* if(connect(sockfd,(struct sockaddr *)&addrs,sizeof(addrs))<0) {

perror(\ exit(-1); }*/

//send login message msg.type=LOG;

strcpy(msg.name,\ strcpy(msg.buf,\

sendto(sockfd,&msg,sizeof(msg),0,(struct sockaddr *)&addrs,sizeof(addrs)); memset(&msg,0,sizeof(msg));

recvfrom(sockfd,&msg,sizeof(msg),0,NULL,NULL); printf(\

//creat fork

if((pid = fork())<0) {

perror(\


udp socket 通信案例.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中铁隧道集团有限公司兰渝铁路西秦岭隧道工程XQLS2标工

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: