679
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <string.h>
#include <sys/socket.h>
int openPort( unsigned short port, unsigned int interfaceIp)
{
int fd;
fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
struct sockaddr_in addr;
memset((char*) &(addr),0, sizeof(struct sockaddr_in));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = htonl(INADDR_ANY);
addr.sin_port = htons(port);
printf("addr.sin_addr.s_addr is %d,addr.sin_port is %d \n",addr.sin_addr.s_addr,addr.sin_port);
if ( (interfaceIp != 0) &&
( interfaceIp != 0x100007f ) )
{
addr.sin_addr.s_addr = htonl(interfaceIp);
}
bind( fd,(struct sockaddr*)&addr, sizeof(struct sockaddr_in));
return fd;
}
int sendMessage( int fd, char* buf, int l,
unsigned int dstIp, unsigned short dstPort)
{
int s;
printf("dstip is %d,dstport is %d\nbuf is %s\n",dstIp,dstPort,buf);
struct sockaddr_in to;
int toLen = sizeof(struct sockaddr_in);
memset(&to,0,toLen);
to.sin_family = AF_INET;
to.sin_port = htons(dstPort);
to.sin_addr.s_addr = dstIp;
s = sendto(fd, buf, l, 0,(struct sockaddr*)&to, toLen);
return 0;
}
int main()
{
int sockfd = -1;
sockfd = openPort(20000,0);
printf("fd is %d\n",sockfd);
char *buf1 = "i am first!";
sendMessage(sockfd,buf1,strlen(buf1),inet_addr("0.0.0.0"),18888);
usleep(10*1000);
sendMessage(sockfd,buf1,strlen(buf1),inet_addr("0.0.0.0"),20000);
return 0;
}