linux下多线程udp编程及库编译调用方法
来源:互联网 发布:俊知电缆集团招工 编辑:程序博客网 时间:2024/05/21 09:13
unsigned char EncBoardIP[4];
typedef struct
{
int Socket;
int DecPort;
int EncPort;
char *DecIp;
char *EncIp;
}SockStruct;
void InitNet(char * EncIP,char * DecIP)
{
unsigned long LIP;
unsigned char * BoardIP ;
LIP = inet_addr(EncIP);
BoardIP = (unsigned char*) &LIP;
EncBoardIP[0] = BoardIP[0];
EncBoardIP[1] = BoardIP[1];
EncBoardIP[2] = BoardIP[2];
EncBoardIP[3] = BoardIP[3];
SockConnect.EncIp = EncIP;
SockConnect.DecIp = DecIP;
SockConnect.EncPort = 10000;
SockConnect.DecPort = 20000;
CreateSocket(&SockConnect);
}
int CreateSocket(SockStruct *sockfd_all)
{
struct sockaddr_in ser_addr,cli_addr;
if((sockfd_all->Socket= socket(AF_INET,SOCK_DGRAM,0)) == -1)
{
perror("socket");
exit(-1);
}
bzero(&ser_addr,sizeof(ser_addr));
ser_addr.sin_family = AF_INET;
ser_addr.sin_addr.s_addr = inet_addr((sockfd_all->DecIp));
ser_addr.sin_port = htons(sockfd_all->DecPort);
bzero(&cli_addr,sizeof(cli_addr));
cli_addr.sin_family = AF_INET;
cli_addr.sin_addr.s_addr = inet_addr((sockfd_all->EncIp));
cli_addr.sin_port = htons(sockfd_all->EncPort);
if((bind(sockfd_all->Socket,(struct sockaddr *)&cli_addr,sizeof(cli_addr))) == -1)
{
perror("bind");
exit(-1);
}
if((connect(sockfd_all->Socket,(struct sockaddr *)&ser_addr,sizeof(ser_addr))) == -1)
{
perror("connect");
exit(-1);
}
return 0;
}
void* RecvThread(void* arg)
{
while(Flag)
{
if(RecvBufferFullOrEmpty()!=1) //判断缓冲区是否满
{
}
}
}
int main(int argc, const char *argv[])
{int i;
pthread_t tid1, tid2,tid3;
int rc1=0, rc2=0,rc3=0;
bool flag;
unsigned char tmp;
unsigned int count=0;
unsigned int count1=0;
prFile = fopen(argv[1],"rb+");
if(prFile == NULL)
{
fprintf(stdout,"read video file fail to fopen:%s\n",strerror(errno));
return -1;
}
InitNet("192.168.0.150","192.168.0.160");
printf("Net_Connect Succesful!!\r\n");
rc1 = pthread_create(&tid1, NULL, RecvThread, NULL);
if(rc1 != 0)
printf("%s: %d\n",__func__, strerror(rc1));
rc2 = pthread_create(&tid2, NULL, VideoDataHandleThread, NULL);
if(rc2 != 0)
printf("%s: %d\n",__func__, strerror(rc2));
rc3 = pthread_create(&tid3, NULL, TeleDataHandleThread, NULL);
if(rc3 != 0)
printf("%s: %d\n",__func__, strerror(rc3));
while(1);
}
编译方法:
gcc -c videoplay.c
ar rcs libvideoplay.a videoplay.o
gcc -o play main.c -static -L. -lvideoplay -lpthread
- linux下多线程udp编程及库编译调用方法
- linux下UDP编程
- linux下udp编程
- Linux下的UDP编程
- linux下socket编程(udp)
- Linux下的UDP编程
- linux下多线程编程
- linux下多线程编程
- LINUX 下多线程编程
- Linux下多线程编程
- Linux下多线程编程
- linux 下多线程编程
- linux下多线程编程
- linux下多线程编程
- LInux 下多线程编程
- Linux下多线程编程
- Linux下多线程编程
- Linux下多线程编程
- _MSC_VER详细介绍
- POJ 1328 Radar Installation 贪心区间选点
- windows sdk
- Different Ways to Add Parentheses
- virtualbox + windbg + xp驱动环境配置.txt
- linux下多线程udp编程及库编译调用方法
- virtual box 日志路径
- Python3中关于中文编码的问题
- ubantu安装gradle
- source insigned增加.cc
- svn Password for ‘(null)’ GNOME keyring:
- TortoiseSVN中分支和合并实践
- vertical diffsplit a.txt
- 项目文件包含 ToolsVersion="12.0" 设置,而此版本的 MSBuild 不支持该工具版本