UDP接收和发送线程 实际应用案例
来源:互联网 发布:网络说唱歌手皇甫 编辑:程序博客网 时间:2024/05/20 17:41
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h> /*for errno*/
#include <fcntl.h>
#include <sys/types.h> /*for open close*/
#include <sys/stat.h>
#include <sys/ioctl.h> /*for ioctl*/
#include <sys/mman.h> /*for mmap*/
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <signal.h>
#include <sys/time.h>
#include <sys/mount.h>
#include <pthread.h>
#include <netdb.h>
typedef enum{
UDP_MSG_START_LIVE_RECORDING = 0,
UDP_MSG_STOP_LIVE_RECORDING,
UDP_MSG_START_RESERVATION_RECORDING,
UDP_MSG_START_STOP_RESERVATION_RECORDING,
UDP_MSG_CHECK_LIVE_RECORDING,
UDP_MSG_CHECK_RESERVATION_RECORDING
}UDP_MSG_TYPE ;
typedef struct UDP_MESSAGE_S{
UDP_MSG_TYPE msgType;
char msgBody[300];
//int msgLength;
} UDP_MESSAGE_S;
#define MSG_MAX 304
#define UDP_RECV_MSG_PORT 9009
#define UDP_SEND_MSG_PORT 9009
pthread_t recvThreadId;
static int recv_sockfd = -1;
char encAddr[64];
struct sockaddr_in server_addr;
int SetupRecvSocket(char *server, int port)
{
struct hostent *host;
struct sockaddr_in saddr;
int sock;
printf("server = %s\n", server);
if ( (sock = socket (AF_INET, SOCK_DGRAM, 0) ) == -1) //get a socket fd
{
fprintf (stderr, "Socket Error:%s\a\n", strerror (errno) );
return -1;
}
bzero (&server_addr, sizeof (server_addr) );//fill in structure with client info
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = htonl (INADDR_ANY);
server_addr.sin_port = htons(UDP_RECV_MSG_PORT);
if (bind (sock,(struct sockaddr *) & server_addr, sizeof (server_addr) ) < 0){ //bind a port not used
fprintf (stderr, "[pvrFileList] Cannot bind socket\n");
return -1;
}
return sock;
}
void receiveMsg()
{
int length = 0;
int zeroreads = 0;
fd_set readfds, writefds, exceptfds;
struct timeval timeout;
struct sockaddr_in clientAddr;
char Xmsg[MSG_MAX];
socklen_t addr_size = sizeof(server_addr);
FD_ZERO(&writefds);
FD_ZERO(&exceptfds);
printf("Wait for encoder to start before registering for stats\n");
//sleep(1);
if (recv_sockfd >= 0) {
printf("enc_sockfd already opened... closing\n");
close(recv_sockfd);
recv_sockfd = -1;
}
if ( (recv_sockfd = SetupRecvSocket (encAddr, UDP_RECV_MSG_PORT) ) == -1 ) {
printf ("error on network setup\n");
return;
}
printf("Listen loop\n");
while (1)
{
int i;
UDP_MESSAGE_S msg;
if (recv_sockfd < 0) {
printf("ReceiveEncMsg, no socket\n");
return;
}
FD_ZERO(&readfds);
FD_SET(recv_sockfd, &readfds);
// 3 second timeout on update messages.
timeout.tv_sec = 3;
timeout.tv_usec = 0;
//printf("ReceiveEncMsg, calling select\n");
i = select(recv_sockfd+1, &readfds, &writefds, &exceptfds, &timeout);
if (!i) {
//printf("Select times out... retry\n");
continue;
}
//printf("ReceiveEncMsg, waiting for socket read\n");
//length += recvfrom(recv_sockfd, &Xmsg[length], 300, 0, (struct sockaddr*)&clientAddr, &addr_size);
length += recvfrom(recv_sockfd, &Xmsg[length], 304, 0, (struct sockaddr*)&clientAddr, &addr_size);
//printf("ReceiveEncMsg, back from read\n");
if (length < 0) {
//close(enc_sockfd);
printf("Error on enc_sockfd read... closing...\n");
return;
}
if (length == 0) {
zeroreads++;
if (zeroreads > 3) {
printf("3 zero reads in a row on enc_sockfd read... closing...\n");
//close(enc_sockfd);
return;
}
} else
zeroreads = 0;
memcpy(&msg, Xmsg, sizeof(msg));
printf("ReceiveEncMsg, read %d bytes, type=%d body=%s\n", length, msg.msgType, msg.msgBody);
Xmsg[length-1] = '\0';
//printf("zero Xmsg, reset length\n");
memset (Xmsg, 0, MSG_MAX);
length = 0;
}
}
void *receiveMsgThread(void *arg)
{
//void *pArg = (void *)arg;
receiveMsg();
return (void *)0;
}
void startRecvMsgThread (void* args)
{
void* res;
printf("Start Recv msg thread1\n");
pthread_create(&recvThreadId, NULL, receiveMsgThread, args);
//pthread_join(recvThreadId, &res);
}
#include <ifaddrs.h>
#include <arpa/inet.h>
#define SERVER_IP "192.168.1.1"
struct ifaddrs* getLocalIP(void){
struct ifaddrs * ifAddrStruct = NULL;
void * tmpAddrPtr = NULL;
getifaddrs(&ifAddrStruct);
while (ifAddrStruct!=NULL) {
if (ifAddrStruct->ifa_addr->sa_family==AF_INET) { // check it is IP4
// is a valid IP4 Address
tmpAddrPtr=&((struct sockaddr_in *)ifAddrStruct->ifa_addr)->sin_addr;
char addressBuffer[INET_ADDRSTRLEN];
inet_ntop(AF_INET, tmpAddrPtr, addressBuffer, INET_ADDRSTRLEN);
printf("%s IP Address1 %s/n", ifAddrStruct->ifa_name, addressBuffer);
} else if (ifAddrStruct->ifa_addr->sa_family==AF_INET6) { // check it is IP6
// is a valid IP6 Address
tmpAddrPtr=&((struct sockaddr_in *)ifAddrStruct->ifa_addr)->sin_addr;
char addressBuffer[INET6_ADDRSTRLEN];
inet_ntop(AF_INET6, tmpAddrPtr, addressBuffer, INET6_ADDRSTRLEN);
printf("%s IP Address2 %s/n", ifAddrStruct->ifa_name, addressBuffer);
}
ifAddrStruct=ifAddrStruct->ifa_next;
}
//printf("ifa_addr = %s\n", inet_ntoa(((struct sockaddr_in *)ifAddrStruct->ifa_addr)->sin_addr));
return ifAddrStruct;
}
pthread_t sendThreadId;
void* sendMsgThread(void *arg){
int s,len;
struct sockaddr_in addr;
socklen_t addr_len = sizeof(struct sockaddr_in);
char buffer[256];
if((s = socket(AF_INET,SOCK_DGRAM,0))<0){
perror("socket");
exit(1);
}
bzero(&addr,sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(UDP_SEND_MSG_PORT);
addr.sin_addr.s_addr = inet_addr(SERVER_IP);
UDP_MESSAGE_S msg;
int cnt = 0;
int send_len = 0;
while(1){
bzero(buffer,sizeof(buffer));
sprintf(buffer, "%s->%d", "hello", cnt);
msg.msgType = cnt;
strcpy(msg.msgBody, buffer);
send_len = sendto(s,&msg, sizeof(msg), 0, (struct sockaddr *)&addr, addr_len);
printf("sendto2: %d %s send_len =%d\n", msg.msgType, msg.msgBody, send_len);
sleep(1);
//len = recvfrom(s, buffer, sizeof(buffer), 0, (struct sockaddr *)&addr, &addr_len);
//printf("receive: %s",buffer);
cnt++;
}
}
void startSendMsgThread (void* args)
{
void* res;
printf("Start Send msg thread2\n");
pthread_create (&sendThreadId, NULL, sendMsgThread, args);
pthread_join(sendThreadId, &res);
}
#include <net/if.h>
/* eth */
typedef enum hiEth_LinkStatus_E
{
ETH_LINK_STATUS_OFF = 0,
ETH_LINK_STATUS_ON,
ETH_LINK_STATUS_MAX
} Eth_LinkStatus_E, *PTR_Eth_LinkStatus_E;
typedef enum hiEth_Port_E
{
ETH_PORT_UP = 0,
ETH_PORT_DOWN,
ETH_PORT_MAX
} Eth_Port_E;
static int g_s32ETHFd[2] = {0, 0};
#define HI_SUCCESS (0)
#define HI_FAILURE (-1)
int HI_ETH_GetLinkStatus(Eth_Port_E ePort, PTR_Eth_LinkStatus_E ptrLinkStatus)
{
int sockfd;
struct ifreq ifr;
if (NULL == ptrLinkStatus)
{
printf("null pointer\n");
return -1;
}
if (ETH_PORT_MAX <= ePort)
{
printf("invalid parameter:%d\n", ePort);
return -1;
}
if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
{
printf("create socket failed\n");
return -1;
}
bzero((char *)&ifr, sizeof(ifr));
strcpy(ifr.ifr_name, "eth0");
if (ioctl(sockfd, SIOCGIFFLAGS, (char *)&ifr) < 0)
{
printf("ioctl socket failed\n");
close(sockfd);
return -1;
}
if ((ifr.ifr_flags & IFF_RUNNING) == 0)
{
*ptrLinkStatus = ETH_LINK_STATUS_OFF;
}
else
{
*ptrLinkStatus = ETH_LINK_STATUS_ON;
}
close(sockfd);
return 0;
}
int HI_ETH_Open(Eth_Port_E ePort)
{
struct ifreq ifr;
int sockfd;
if (ETH_PORT_MAX <= ePort)
{
printf("invalid parameter:%d\n", ePort);
return -1;
}
g_s32ETHFd[ePort] = 1;
if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
{
printf("socket create fail!\n");
return -1;
}
strcpy(ifr.ifr_name, "eth0");
if((ioctl(sockfd,SIOCGIFFLAGS,(caddr_t)&ifr))==-1)
{
perror("SIOCGIFFLAGS fail :");
close(sockfd);
return -1;
}
ifr.ifr_flags |= IFF_UP;
if((ioctl(sockfd,SIOCSIFFLAGS,(caddr_t)&ifr))==-1)
{
perror("SIOCSIFFLAGS fail :");
close(sockfd);
return -1;
}
close(sockfd);
return 0;
}
int HI_ETH_IPAddressGet (Eth_Port_E ePort, char *ipAdd)
{
int sockfd;
struct ifreq ifr;
struct sockaddr_in *s_in;
if (NULL == ipAdd)
{
printf("null pointer\n");
return -1;
}
if (ETH_PORT_MAX <= ePort)
{
printf("invalid parameter:%d\n", ePort);
return -1;
}
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd < 0)
{
printf("socket create fail!\n");
return HI_FAILURE;
}
memset(&ifr, 0, sizeof(ifr));
strcpy(ifr.ifr_name, "eth0");
if (ioctl(sockfd, SIOCGIFADDR, &ifr) < 0)
{
printf("ioctl fail!\n");
close(sockfd);
return HI_FAILURE;
}
s_in = (struct sockaddr_in *)(&ifr.ifr_addr);
memcpy((void *)ipAdd, inet_ntoa(s_in->sin_addr), 15);
close(sockfd);
return HI_SUCCESS;
}
int getHostIpAddr(void){
Eth_LinkStatus_E linkflag;
char ipaddr[16];
char ipmask[16];
char getway[16];
char dns[16];
char mac[18];
int ret;
Eth_Port_E eth = ETH_PORT_UP;
eth = ETH_PORT_UP;
HI_ETH_GetLinkStatus(eth, &linkflag);
if (linkflag == ETH_LINK_STATUS_OFF)
{
printf("%s Port Is not link\n", "eth0");
return 0;
}
else
{
printf(" %s Port Is link\n", "eth0");
}
HI_ETH_Open(eth);
memset(ipaddr, 0, sizeof(ipaddr));
ret = HI_ETH_IPAddressGet(eth, ipaddr);
if (ret != HI_SUCCESS)
{
printf("get ipaddr error!\n");
}
printf("ipaddr = %s\n", ipaddr);
sprintf(encAddr, "%s", "192.168.1.1");
}
int main(int argc, char* argv[])
{
//getHostIpAddr();
sprintf(encAddr, "%s", "192.168.1.1");
startRecvMsgThread(NULL);
startSendMsgThread(NULL);
//sendMsgThread(NULL);
return 0;
}
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h> /*for errno*/
#include <fcntl.h>
#include <sys/types.h> /*for open close*/
#include <sys/stat.h>
#include <sys/ioctl.h> /*for ioctl*/
#include <sys/mman.h> /*for mmap*/
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <signal.h>
#include <sys/time.h>
#include <sys/mount.h>
#include <pthread.h>
#include <netdb.h>
typedef enum{
UDP_MSG_START_LIVE_RECORDING = 0,
UDP_MSG_STOP_LIVE_RECORDING,
UDP_MSG_START_RESERVATION_RECORDING,
UDP_MSG_START_STOP_RESERVATION_RECORDING,
UDP_MSG_CHECK_LIVE_RECORDING,
UDP_MSG_CHECK_RESERVATION_RECORDING
}UDP_MSG_TYPE ;
typedef struct UDP_MESSAGE_S{
UDP_MSG_TYPE msgType;
char msgBody[300];
//int msgLength;
} UDP_MESSAGE_S;
#define MSG_MAX 304
#define UDP_RECV_MSG_PORT 9009
#define UDP_SEND_MSG_PORT 9009
pthread_t recvThreadId;
static int recv_sockfd = -1;
char encAddr[64];
struct sockaddr_in server_addr;
int SetupRecvSocket(char *server, int port)
{
struct hostent *host;
struct sockaddr_in saddr;
int sock;
printf("server = %s\n", server);
if ( (sock = socket (AF_INET, SOCK_DGRAM, 0) ) == -1) //get a socket fd
{
fprintf (stderr, "Socket Error:%s\a\n", strerror (errno) );
return -1;
}
bzero (&server_addr, sizeof (server_addr) );//fill in structure with client info
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = htonl (INADDR_ANY);
server_addr.sin_port = htons(UDP_RECV_MSG_PORT);
if (bind (sock,(struct sockaddr *) & server_addr, sizeof (server_addr) ) < 0){ //bind a port not used
fprintf (stderr, "[pvrFileList] Cannot bind socket\n");
return -1;
}
return sock;
}
void receiveMsg()
{
int length = 0;
int zeroreads = 0;
fd_set readfds, writefds, exceptfds;
struct timeval timeout;
struct sockaddr_in clientAddr;
char Xmsg[MSG_MAX];
socklen_t addr_size = sizeof(server_addr);
FD_ZERO(&writefds);
FD_ZERO(&exceptfds);
printf("Wait for encoder to start before registering for stats\n");
//sleep(1);
if (recv_sockfd >= 0) {
printf("enc_sockfd already opened... closing\n");
close(recv_sockfd);
recv_sockfd = -1;
}
if ( (recv_sockfd = SetupRecvSocket (encAddr, UDP_RECV_MSG_PORT) ) == -1 ) {
printf ("error on network setup\n");
return;
}
printf("Listen loop\n");
while (1)
{
int i;
UDP_MESSAGE_S msg;
if (recv_sockfd < 0) {
printf("ReceiveEncMsg, no socket\n");
return;
}
FD_ZERO(&readfds);
FD_SET(recv_sockfd, &readfds);
// 3 second timeout on update messages.
timeout.tv_sec = 3;
timeout.tv_usec = 0;
//printf("ReceiveEncMsg, calling select\n");
i = select(recv_sockfd+1, &readfds, &writefds, &exceptfds, &timeout);
if (!i) {
//printf("Select times out... retry\n");
continue;
}
//printf("ReceiveEncMsg, waiting for socket read\n");
//length += recvfrom(recv_sockfd, &Xmsg[length], 300, 0, (struct sockaddr*)&clientAddr, &addr_size);
length += recvfrom(recv_sockfd, &Xmsg[length], 304, 0, (struct sockaddr*)&clientAddr, &addr_size);
//printf("ReceiveEncMsg, back from read\n");
if (length < 0) {
//close(enc_sockfd);
printf("Error on enc_sockfd read... closing...\n");
return;
}
if (length == 0) {
zeroreads++;
if (zeroreads > 3) {
printf("3 zero reads in a row on enc_sockfd read... closing...\n");
//close(enc_sockfd);
return;
}
} else
zeroreads = 0;
memcpy(&msg, Xmsg, sizeof(msg));
printf("ReceiveEncMsg, read %d bytes, type=%d body=%s\n", length, msg.msgType, msg.msgBody);
Xmsg[length-1] = '\0';
//printf("zero Xmsg, reset length\n");
memset (Xmsg, 0, MSG_MAX);
length = 0;
}
}
void *receiveMsgThread(void *arg)
{
//void *pArg = (void *)arg;
receiveMsg();
return (void *)0;
}
void startRecvMsgThread (void* args)
{
void* res;
printf("Start Recv msg thread1\n");
pthread_create(&recvThreadId, NULL, receiveMsgThread, args);
//pthread_join(recvThreadId, &res);
}
#include <ifaddrs.h>
#include <arpa/inet.h>
#define SERVER_IP "192.168.1.1"
struct ifaddrs* getLocalIP(void){
struct ifaddrs * ifAddrStruct = NULL;
void * tmpAddrPtr = NULL;
getifaddrs(&ifAddrStruct);
while (ifAddrStruct!=NULL) {
if (ifAddrStruct->ifa_addr->sa_family==AF_INET) { // check it is IP4
// is a valid IP4 Address
tmpAddrPtr=&((struct sockaddr_in *)ifAddrStruct->ifa_addr)->sin_addr;
char addressBuffer[INET_ADDRSTRLEN];
inet_ntop(AF_INET, tmpAddrPtr, addressBuffer, INET_ADDRSTRLEN);
printf("%s IP Address1 %s/n", ifAddrStruct->ifa_name, addressBuffer);
} else if (ifAddrStruct->ifa_addr->sa_family==AF_INET6) { // check it is IP6
// is a valid IP6 Address
tmpAddrPtr=&((struct sockaddr_in *)ifAddrStruct->ifa_addr)->sin_addr;
char addressBuffer[INET6_ADDRSTRLEN];
inet_ntop(AF_INET6, tmpAddrPtr, addressBuffer, INET6_ADDRSTRLEN);
printf("%s IP Address2 %s/n", ifAddrStruct->ifa_name, addressBuffer);
}
ifAddrStruct=ifAddrStruct->ifa_next;
}
//printf("ifa_addr = %s\n", inet_ntoa(((struct sockaddr_in *)ifAddrStruct->ifa_addr)->sin_addr));
return ifAddrStruct;
}
pthread_t sendThreadId;
void* sendMsgThread(void *arg){
int s,len;
struct sockaddr_in addr;
socklen_t addr_len = sizeof(struct sockaddr_in);
char buffer[256];
if((s = socket(AF_INET,SOCK_DGRAM,0))<0){
perror("socket");
exit(1);
}
bzero(&addr,sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(UDP_SEND_MSG_PORT);
addr.sin_addr.s_addr = inet_addr(SERVER_IP);
UDP_MESSAGE_S msg;
int cnt = 0;
int send_len = 0;
while(1){
bzero(buffer,sizeof(buffer));
sprintf(buffer, "%s->%d", "hello", cnt);
msg.msgType = cnt;
strcpy(msg.msgBody, buffer);
send_len = sendto(s,&msg, sizeof(msg), 0, (struct sockaddr *)&addr, addr_len);
printf("sendto2: %d %s send_len =%d\n", msg.msgType, msg.msgBody, send_len);
sleep(1);
//len = recvfrom(s, buffer, sizeof(buffer), 0, (struct sockaddr *)&addr, &addr_len);
//printf("receive: %s",buffer);
cnt++;
}
}
void startSendMsgThread (void* args)
{
void* res;
printf("Start Send msg thread2\n");
pthread_create (&sendThreadId, NULL, sendMsgThread, args);
pthread_join(sendThreadId, &res);
}
#include <net/if.h>
/* eth */
typedef enum hiEth_LinkStatus_E
{
ETH_LINK_STATUS_OFF = 0,
ETH_LINK_STATUS_ON,
ETH_LINK_STATUS_MAX
} Eth_LinkStatus_E, *PTR_Eth_LinkStatus_E;
typedef enum hiEth_Port_E
{
ETH_PORT_UP = 0,
ETH_PORT_DOWN,
ETH_PORT_MAX
} Eth_Port_E;
static int g_s32ETHFd[2] = {0, 0};
#define HI_SUCCESS (0)
#define HI_FAILURE (-1)
int HI_ETH_GetLinkStatus(Eth_Port_E ePort, PTR_Eth_LinkStatus_E ptrLinkStatus)
{
int sockfd;
struct ifreq ifr;
if (NULL == ptrLinkStatus)
{
printf("null pointer\n");
return -1;
}
if (ETH_PORT_MAX <= ePort)
{
printf("invalid parameter:%d\n", ePort);
return -1;
}
if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
{
printf("create socket failed\n");
return -1;
}
bzero((char *)&ifr, sizeof(ifr));
strcpy(ifr.ifr_name, "eth0");
if (ioctl(sockfd, SIOCGIFFLAGS, (char *)&ifr) < 0)
{
printf("ioctl socket failed\n");
close(sockfd);
return -1;
}
if ((ifr.ifr_flags & IFF_RUNNING) == 0)
{
*ptrLinkStatus = ETH_LINK_STATUS_OFF;
}
else
{
*ptrLinkStatus = ETH_LINK_STATUS_ON;
}
close(sockfd);
return 0;
}
int HI_ETH_Open(Eth_Port_E ePort)
{
struct ifreq ifr;
int sockfd;
if (ETH_PORT_MAX <= ePort)
{
printf("invalid parameter:%d\n", ePort);
return -1;
}
g_s32ETHFd[ePort] = 1;
if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
{
printf("socket create fail!\n");
return -1;
}
strcpy(ifr.ifr_name, "eth0");
if((ioctl(sockfd,SIOCGIFFLAGS,(caddr_t)&ifr))==-1)
{
perror("SIOCGIFFLAGS fail :");
close(sockfd);
return -1;
}
ifr.ifr_flags |= IFF_UP;
if((ioctl(sockfd,SIOCSIFFLAGS,(caddr_t)&ifr))==-1)
{
perror("SIOCSIFFLAGS fail :");
close(sockfd);
return -1;
}
close(sockfd);
return 0;
}
int HI_ETH_IPAddressGet (Eth_Port_E ePort, char *ipAdd)
{
int sockfd;
struct ifreq ifr;
struct sockaddr_in *s_in;
if (NULL == ipAdd)
{
printf("null pointer\n");
return -1;
}
if (ETH_PORT_MAX <= ePort)
{
printf("invalid parameter:%d\n", ePort);
return -1;
}
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
if (sockfd < 0)
{
printf("socket create fail!\n");
return HI_FAILURE;
}
memset(&ifr, 0, sizeof(ifr));
strcpy(ifr.ifr_name, "eth0");
if (ioctl(sockfd, SIOCGIFADDR, &ifr) < 0)
{
printf("ioctl fail!\n");
close(sockfd);
return HI_FAILURE;
}
s_in = (struct sockaddr_in *)(&ifr.ifr_addr);
memcpy((void *)ipAdd, inet_ntoa(s_in->sin_addr), 15);
close(sockfd);
return HI_SUCCESS;
}
int getHostIpAddr(void){
Eth_LinkStatus_E linkflag;
char ipaddr[16];
char ipmask[16];
char getway[16];
char dns[16];
char mac[18];
int ret;
Eth_Port_E eth = ETH_PORT_UP;
eth = ETH_PORT_UP;
HI_ETH_GetLinkStatus(eth, &linkflag);
if (linkflag == ETH_LINK_STATUS_OFF)
{
printf("%s Port Is not link\n", "eth0");
return 0;
}
else
{
printf(" %s Port Is link\n", "eth0");
}
HI_ETH_Open(eth);
memset(ipaddr, 0, sizeof(ipaddr));
ret = HI_ETH_IPAddressGet(eth, ipaddr);
if (ret != HI_SUCCESS)
{
printf("get ipaddr error!\n");
}
printf("ipaddr = %s\n", ipaddr);
sprintf(encAddr, "%s", "192.168.1.1");
}
int main(int argc, char* argv[])
{
//getHostIpAddr();
sprintf(encAddr, "%s", "192.168.1.1");
startRecvMsgThread(NULL);
startSendMsgThread(NULL);
//sendMsgThread(NULL);
return 0;
}
0 0
- UDP接收和发送线程 实际应用案例
- UDP协议发送和接收消息案例详解
- UDP 发送和接收
- UDP传输协议的基本应用-发送和接收
- C# UDP接收和发送
- UDP发送和接收程序
- UDP发送和接收程序
- C# UDP接收和发送
- 线程接收和发送
- [C#] 接收和发送UDP数据
- 使用UDP发送和接收消息
- c#中UDP数据发送和接收
- 使用UDP协议发送和接收数据
- 使用UDP协议发送和接收数据
- 使用UDP协议发送和接收数据
- Udp发送端和接收端
- android 实现UDP发送和接收
- 通过UDP发送和接收数据包
- leetcode.(53).205. Isomorphic Strings
- Android Studio Failed to crunch file
- 如何加载html格式的文本
- redis基础之HyperLogLog数据结构
- Xcode 8.1 Create NSManagedObject Subclass 编译错误
- UDP接收和发送线程 实际应用案例
- cocos2d js 网络通信相关信息
- 通过阿里云域名动态解析 IP 地址
- 感知器基础
- Android TV Launcher开源项目
- Intellij快捷键
- Android滑动菜单特效实现,仿人人客户端侧滑效果,史上最简单的侧滑实现
- 关于iOS开发中隐藏导航栏的问题
- Java多线程(一)--线程同步