c语音 udp最大长度_c语言udp自定义头文件 网络通信程序
//udp.h
#ifndef _UDP_H
#define _UDP_H
#include
#include
#include
#include
#include
#include
#include
typedef struct SockData
{
struct sockaddr_in sockaddrIn;
int sockFd;
int sockaddrLen;
}SData;
void SetServerSockaddr(int port,struct SockData *sd);//初始化服務器端
void SetClientSockaddr(char ip[],int port,struct SockData *cd);//初始化客戶端
int RecvMsg(struct SockData *sd,char msg[]);//接受消息 返回接受字節長度
int SendMsg(struct SockData *cd,char msg[]);//發送消息返回發送字節長度
#endif
//udp.c
#include "udp.h"
void SetServerSockaddr(int port,struct SockData *sd)
{
int len;
int sockfd;
struct sockaddr_in ser;
bzero(&ser, sizeof(ser));
ser.sin_family = AF_INET;
ser.sin_addr.s_addr =htonl(INADDR_ANY);
ser.sin_port = htons(port);
len = sizeof(ser);
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if(sockfd == -1)
{
perror("error!n");
exit(-1);
}
bind(sockfd, (struct sockaddr *)&ser, sizeof(ser));
sd->sockaddrIn=ser;
sd->sockFd=sockfd;
sd->sockaddrLen=len;
}
void SetClientSockaddr(char ip[],int port,struct SockData *cd)
{
struct sockaddr_in cl;
int sockfd;
int len;
sockfd = socket(AF_INET,SOCK_DGRAM,0);
if(sockfd == -1)
{
perror("error!n");
exit(-1);
}
int broadcast = 1;
int num = 0;
int ret_val = setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&broadcast,sizeof(broadcast));
if(ret_val == -1)
{
perror("Failed in setsockfd n");
exit(-1);
}
cl.sin_family = AF_INET;
cl.sin_port = htons(port);
cl.sin_addr.s_addr = inet_addr(ip);
len=sizeof(struct sockaddr_in);
cd->sockaddrIn=cl;
cd->sockFd=sockfd;
cd->sockaddrLen=len;
}
int RecvMsg(struct SockData *sd,char msg[])
{
int len;
len=recvfrom(sd->sockFd,msg,1024,0,(struct sockaddr *)&(sd->sockaddrIn),&(sd->sockaddrLen));
msg[len]='n';
return len;
}
int SendMsg(struct SockData *cd,char msg[])
{
int len;
len= sendto(cd->sockFd,msg,strlen(msg),0,(struct sockaddr *)&(cd->sockaddrIn),cd->sockaddrLen);
return len;
}
//client.c
#include "udp.h"
#include
#include
int main()
{
int len;
char recv_msg[256];
char send_msg[256]="send come server !";
SData cd;
//SetServerSockaddr(8899,&cd);
//SData cd;
SetClientSockaddr("127.0.0.1",8899,&cd);
int count=0;
while(1)
{
count++;
SendMsg(&cd,send_msg);
printf("send message : %sn", send_msg);//inet_ntoa(cl.sin_addr);
bzero(&recv_msg,sizeof(recv_msg));
RecvMsg(&cd,recv_msg);
printf("recv message : %d%sn",count, recv_msg);//inet_ntoa(cl.sin_addr);
}
return 0;
}
//server.c
#include "udp.h"
#include
#include
int main()
{
int len;
char recv_msg[256];
char send_msg[256]="send come server !";
SData cd;
SetServerSockaddr(8899,&cd);
//SData cd;
//SetClientSockaddr("127.0.0.1",8899,&cd);
int count=0;
while(1)
{
count++;
bzero(&recv_msg,sizeof(recv_msg));
RecvMsg(&cd,recv_msg);
printf("recv message : %d%sn",count, recv_msg);//inet_ntoa(cl.sin_addr);
SendMsg(&cd,send_msg);
printf("send message : %sn", send_msg);//inet_ntoa(cl.sin_addr);
}
return 0;
}
分享到:
2012-05-16 12:36
瀏覽 1236
評論
總結
以上是生活随笔為你收集整理的c语音 udp最大长度_c语言udp自定义头文件 网络通信程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php9宫格抽奖程序_php抽奖算法(适
- 下一篇: redis集群扩容和缩容_Full-St