- 论坛徽章:
- 0
|
10可用积分
各位前辈。我一直没发现错在哪里,估计是传递参数哪里有问题,希望能帮我修改一下。谢谢了
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <errno.h>
#include <stdlib.h>
#include <netdb.h>
#include <arpa/inet.h>
#define UDPPORT 4444
int main(int argc,char **argv)
{
int sockfd,iplen,len;
char buf[128];
struct sockaddr_in udpserver_addr;
struct sockaddr_in udpclient_addr;
struct hostent *host;
if( argc < 2 )
{
printf("please hostn");
exit(1);
}
if((host=gethostbyname(argv[1]))==NULL)
{
perror("gethostbynamen");
exit(1);
}
if((sockfd=socket(AF_INET,SOCK_DGRAM,0))==-1)
{
perror("socketn");
exit(1);
}
int opt=1;
setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
udpclient_addr.sin_family=AF_INET;
udpclient_addr.sin_port=htons(UDPPORT);
udpclient_addr.sin_addr=*((struct in_addr *)host->h_addr);
bzero(&(udpclient_addr.sin_zero),8);
/* if(bind(sockfd,(struct sockaddr *)&udpclient_addr,sizeof(struct sockaddr))==-1)
{
perror("bindn");
exit(1);
}*/
iplen=sizeof(udpclient_addr);
strcpy(buf,"hello");
if(len=sendto(sockfd,buf,strlen(buf),0,(struct sockaddr *)&udpserver_addr,sizeof(struct sockaddr_in))==-1)
{
perror("sendton");
exit(1);
}
close(sockfd);
return 0;
}
|
|
|