打开APP
userphoto
未登录

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

开通VIP
udp实例代码


//client.c

///udpclient.cpp
/*#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>*/

#include "udp_client.h"

int sockfd_c = 0;
struct sockaddr_in server_addr;

int initUdpClient(unsigned port, char *IP)
{
    sockfd_c = socket(PF_INET,SOCK_DGRAM,0);
    if(-1 == sockfd_c)
    {
        printf("socket error\n");
        return -1;
    }

    bzero(&server_addr,sizeof(server_addr));
    server_addr.sin_family = PF_INET;
    server_addr.sin_port   = htons(port);
    server_addr.sin_addr.s_addr = inet_addr(IP);

printf("TTT----port[%d]---IP[%s]\n", port, IP);

return 0;
}

int uninitUdpClient()
{
close(sockfd_c);
sockfd_c = 0;
}

int c_read(char *buf, int len)
{
len = recvfrom(sockfd_c, buf, len, 0, NULL, NULL);
    if(0 > len)
    {
        return -1;
    }

return len;
}

/* ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
                      const struct sockaddr *dest_addr, socklen_t addrlen); */
int c_write(char *buf, int len)
{
len = sendto(sockfd_c, buf, len, 0, (struct sockaddr *)(&server_addr), sizeof(server_addr));
    if(0 > len)
    {
        return -1;
    }

return len;
}


#if 0
int main(int argc, char * argv [ ])
{
    int sockfd;
    int len,i;
    char buf[1024]={0};
    unsigned short port = 0x9999;
    struct sockaddr_in server_addr;

    sockfd = socket(PF_INET,SOCK_DGRAM,0);
    if(-1 == sockfd)
    {
        printf("socket error\n");
        return -1;
    }

    bzero(&server_addr,sizeof(server_addr));
    server_addr.sin_family = PF_INET;
    server_addr.sin_port   = htons(port);
    server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");

printf("TTT---I will login server---->\n");
    i = 0;
    while(1)
    {

        memset(buf,0,sizeof(buf));
        sprintf(buf,"hello,i am client %d",i);
        len = sendto(sockfd,buf,strlen(buf),0,(struct sockaddr *)(&server_addr),sizeof(server_addr));
        //std::cout<<len<<std::endl;
printf("TTT---buf[%s]----------len[%d]\n", buf, len);

sleep(1);

        memset(buf,0,sizeof(buf));
        sprintf(buf,"fuck fuck fuck %d",i);
        len = sendto(sockfd,buf,strlen(buf),0,(struct sockaddr *)(&server_addr),sizeof(server_addr));
        
        printf("TTT---buf[%s]----------len[%d]\n", buf, len);
        sleep(1);

        i++;
    }
    close(sockfd);
    return 0;
}

#endif


=========================================================================


//client.h
#include <string.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>


int initUdpClient(unsigned port, char *IP);

int uninitUdpClient();

int c_read(char *buf, int len);

int c_write(char *buf, int len);



=======================================================================

main_client.c

#include "udp_client.h"

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>



#define LEN_MAX 1024*200
int main(int argc,char * argv [ ])
{

#if 1
//int n = 18000;
//system("date");
while(1)
{
printf("TTT----I am run--n[----]--\n");
usleep(5*1000);
}
//system("date");
#else
int fd = 0;
char file_name[] = {"video2.h264"};
long file_len = 0;
long n;
int i;
long len = -1;
char *buf = (char *)malloc(LEN_MAX);
unsigned port = 0x9999;
//char IP[] = {"127.0.0.1"};
char IP[] = {"192.168.3.109"};
if(0 != initUdpClient(port, IP))
{
return -1;
}

i = 0;
n = LEN_MAX;
while((n -= 32) > 0)
{
memcpy(buf+i,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",32);
i += 32;
}



fd = open(file_name, O_RDONLY, 0777);
if(fd < 0)
{
printf("TTT---open fail\n");
}
else
{
printf("TTT---open file[%s]\n", file_name);
}
i = 0;
//len = LEN_MAX;
while(1)
    {         
    // 1024*64 不能发
    // 1024*63 可以

len = read(fd, buf, 1024);
if(len <= 0)
{
printf("TTT----read error--- to over\n");
break;
}
len = c_write(buf, len);
if(len < 0)
{
printf("TTT----len[%ld]---\n", len);
}else{
file_len += len;
printf("TTT----file_len[%ld]---\n", file_len);
}
usleep(10*1000);
}


uninitUdpClient();
#endif
return 0;
}








=========================================================================



=========================================================================


server.c


#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

#include "udp_server.h"

int sockfd_s = 0;

int initUdpServer(unsigned port)
{

struct sockaddr_in server_addr;
sockfd_s = socket(PF_INET,SOCK_DGRAM,0);
    if(-1 == sockfd_s)
    {
        printf("socket error\n");
return -1;
    }

bzero(&server_addr,sizeof(server_addr));
    server_addr.sin_family = PF_INET;
    server_addr.sin_port   = htons(port);
    server_addr.sin_addr.s_addr = htonl(INADDR_ANY);

if(-1 == bind(sockfd_s,(struct sockaddr *)(&server_addr),sizeof(server_addr)))
{
printf("bind error\n");
return -1;
}

printf("TTT---UDP SERVER init success\n");
return 0;
}

int uninitUdpServer()
{
close(sockfd_s);
sockfd_s = 0;
}

int s_read(char *buf, int len)
{
len = recvfrom(sockfd_s, buf, len, 0, NULL, NULL);
    if(0 > len)
    {
        return -1;
    }

return len;
}


int s_write(char *buf, int len)
{
len = sendto(sockfd_s, buf, len, 0, NULL, NULL);
    if(0 > len)
    {
        return -1;
    }

return len;
}


#if 0
int main(int argc, char * argv [ ])
{
#if 0 
    int sockfd;
    int len;
    struct sockaddr_in server_addr;
    unsigned short port = 0x9999;
    char buf[1024]={0};

    sockfd = socket(PF_INET,SOCK_DGRAM,0);
    if(-1 == sockfd)
    {
        printf("socket error\n");
    }

    bzero(&server_addr,sizeof(server_addr));
    server_addr.sin_family = PF_INET;
    server_addr.sin_port   = htons(port);
    server_addr.sin_addr.s_addr = htonl(INADDR_ANY);

    if(-1 == bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(server_addr)))
    {
        printf("bind error\n");
        return -1;
    }
#endif

printf("TTT----I am wait for client msg\n");
    while(1)
    {
        len = recvfrom(sockfd,buf,1024,0,NULL,NULL);
        if(0 < len)
        {
            printf("%s\n", buf);
            
printf("TTT---buf[%s]--len[%d]\n", buf, len);
        }
else
{
sleep(1);
}
    }




    printf("server out");
    close(sockfd);
    return 0;
}
#endif


=======================================================================

server.h


#include <unistd.h>
#include <stdlib.h>*/
#include <string.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>


int initUdpServer(unsigned port);

int uninitUdpServer();

int s_read(char *buf, int len);

int s_write(char *buf, int len);


==========================================================================


//main_server.c

#include "udp_server.h"

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(int argc, char *argv[])
{
long file_len = 0;
int fd = 0;
char f_name[] = {"write_test2.h264"};
int len = -1;
char *buf = (char *)malloc(2048);
if(NULL == buf)
{
printf("TTT----malloc error\n");
return -1;
}
unsigned port = 0x9999;

if(-1 == initUdpServer(port))
{
return -1;
}


fd = open(f_name, O_CREAT|O_RDWR, 0777);
if(-1 == fd)
{
printf("TTT----open file\n");
return -1;
}
else
{
printf("TTT----open file[%s]\n", f_name);
}

while(1)
    {
    memset(buf, 0, 2048);
        len = s_read(buf, 1024);
        if(0 < len)
        {           
//printf("TTT---buf[%s]--len[%d]\n", buf, len);
len = write(fd, buf, len);
if(0 > len)
{
printf("TTT----write error--len[%d]\n", len);
}
file_len += len;
printf("TTT----file_len[%ld]---\n", file_len);

if(len < 1024)
{
break;
}
        }
usleep(10*1000);
    }

free(buf);
buf = NULL;
return 0;
}


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
3个学习Socket编程的简单例子:TCP Server/Client, Select
C 语言实现一个简单的 web 服务器
Linux 网络编程——并发服务器的三种实现模型
转udp 超时设置(select函数的一种用法)
用ioctl获得本地ip地址
linux下ioctl操作网络接口
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服