c语音 udp最大长度_C语言UDP协议

展开全部

简单的学习代码,仅供32313133353236313431303231363533e58685e5aeb931333337373662参考:

server.c#include 

#include 

#include 

#include 

#include 

#include 

#define SERVICE_PORT8080

#define BUFSIZE 2048

#define HEAD 4

int main(int argc, char **argv)

{

struct sockaddr_in myaddr;/* our address */

struct sockaddr_in remaddr;/* remote address */

socklen_t addrlen = sizeof(remaddr);/* length of addresses */

int recvlen;/* # bytes received */

int fd;    /* our socket */

int msgcnt = 0;/* count # of messages we received */

unsigned char buf[BUFSIZE]="ret_";/* receive buffer */

/* create a UDP socket */

if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) 

perror("cannot create socket\n");

return 0;

}

/* bind the socket to any valid IP address and a specific port */

memset((char *)&myaddr, 0, sizeof(myaddr));

myaddr.sin_family = AF_INET;

myaddr.sin_addr.s_addr = htonl(INADDR_ANY);

myaddr.sin_port = htons(SERVICE_PORT);

if (bind(fd, (struct sockaddr *)&myaddr, sizeof(myaddr)) 

perror("bind failed");

return 0;

}

/* now loop, receiving data and printing what we received */

for (;;)

{

printf("waiting on port %d\n", SERVICE_PORT);

recvlen = recvfrom(fd, buf+HEAD, BUFSIZE, 0, (struct sockaddr *)&remaddr, &addrlen);

if (recvlen > 0)

{

buf[HEAD+recvlen] = 0;

printf("received message: \"%s\" (%d bytes)\n", buf+HEAD, recvlen);

}

else

{

printf("uh oh - something went wrong!\n");

}

printf("sending response \"%s\"\n", buf);

if (sendto(fd, buf, strlen(buf), 0, (struct sockaddr *)&remaddr, addrlen) 

{

perror("sendto");

}

}

close(fd);

return 0;

}

client.c#include 

#include 

#include 

#include 

#include 

#define SERVICE_PORT8080

#define BUFLEN 2048

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

{

struct sockaddr_in myaddr, remaddr;

int fd, i, slen=sizeof(remaddr);

char sendbuf[BUFLEN]="hello";/* message buffer */

char readbuf[BUFLEN]={0};

int recvlen;/* # bytes in acknowledgement message */

char *server = "127.0.0.1";/* change this to use a different server */

/* create a socket */

if ((fd=socket(AF_INET, SOCK_DGRAM, 0))==-1)

{

printf("socket created\n");

}

/* bind it to all local addresses and pick any port number */

memset((char *)&myaddr, 0, sizeof(myaddr));

myaddr.sin_family = AF_INET;

myaddr.sin_addr.s_addr = htonl(INADDR_ANY);

myaddr.sin_port = htons(0);

if (bind(fd, (struct sockaddr *)&myaddr, sizeof(myaddr)) 

{

perror("bind failed");

return 0;

}

memset((char *) &remaddr, 0, sizeof(remaddr));

remaddr.sin_family = AF_INET;

remaddr.sin_port = htons(SERVICE_PORT);

if (inet_aton(server, &remaddr.sin_addr)==0)

{

fprintf(stderr, "inet_aton() failed\n");

exit(1);

}

printf("Sending packet %d to %s port %d\n", i, server, SERVICE_PORT);

if (sendto(fd, sendbuf, strlen(sendbuf), 0, (struct sockaddr *)&remaddr, slen)==-1)

{

perror("sendto");

exit(1);

}

/* now receive an acknowledgement from the server */

recvlen = recvfrom(fd, readbuf, BUFLEN, 0, (struct sockaddr *)&remaddr, &slen);

if ( recvlen >= 0 )

{

readbuf[recvlen] = 0;/* expect a printable string - terminate it */

printf("received message: \"%s\"\n", readbuf);

}

close(fd);

return 0;

}

如果需要整个工程,可以联系我。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值