打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
UDP Client/Server

int UDP_Open(int port)

{

        int sd;

        if((sd = socket(AF_INET,SOCK_DGRAM,0)) == -1) return -1;

        struct sockaddr_in myaddr;

        bzero(&myaddr,sizeof(myaddr));    

        myaddr.sin_family = AF_INET;

        myaddr.sin_port = htons(port);

        myaddr.sin_addr.s_addr = INADDR_ANY;

        if(bind(sd,(struct sockaddr*)&myaddr,sizeof(myaddr)) == -1)

        {

                close(sd);

                return -1;

        }

        return sd;

}


int UDP_FillSockAddr(struct sockaddr_in *addr,char *hostName, int port)

{

        bzero(addr,sizeof(struct sockaddr_in));

        addr->sin_family = AF_INET;

        addr->sin_port = htons(port);

        struct in_addr *inAddr;

        struct hostent *hostEntry;    

        if((hostEntry = gethostbyname(hostName)) == NULL) return -1;

        inAddr = (struct in_addr*) hostEntry->h_addr;

        addr->sin_addr = *inAddr;

        return 0;

}


int UDP_Write(int sd, struct sockaddr_in *addr, char *buffer, int n)

{

        int addrLen = sizeof(struct sockaddr_in);

        return sendto(sd,buffer,n,0, (struct sockaddr *)addr,addrLen);

}


int UDP_Read(int sd, struct sockaddr_in *addr, char *buffer, int n)

{

        int len = sizeof(struct sockaddr_in);

        return recvfrom(sd,buffer,n,0,(struct sockaddr *) addr,(socklen_t *) &len);

}


// client code

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

{

        int sd = UDP_Open(2000);

        struct sockaddr_in addr, addr2;

        int rc = UDP_FillSockAddr(&addr,"machine.cs.wisc.edu",10000);

        char message[BUFFER_SIZE];

        sprintf(message, "hello world");

        rc = UDP_Write(sd,&addr,message,BUFFER_SIZE);

        if(rc > 0)

        {

                rc = UDP_Read(sd,&addr2,buffer,BUFFER_SIZE);

        }

        return 0;

}


// server code

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

{

        int sd = UDP_Open(10000);

        assert(sd > -1);

        while(1)

        {

                struct sockaddr_in s;

                char buffer[BUFFER_SIZE];

                int rc = UDP_Read(sd, &s, buffer, BUFFER_SIZE);

                if(rc > 0)

                {

                        char reply[BUFFER_SIZE];

                        sprintf(reply,"reply");

                        rc = UDP_Write(sd, &s, reply, BUFFER_SIZE);

                }

        }

        return 0;

}

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
SOCKET UDP组播 实例
发烧友实测 | i.MX8MP 基于HTTP网页服务器和UDP上位机的MJPG码流传输(mjpg
Linux下C语言实现UDP Socket编程
Linux Socket学习(十三)
udp客户端和服务代码
Socket编程函数集
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服