首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

这个程序需要改哪些地方才能在windosXP下编译通过解决方法

2012-03-17 
这个程序需要改哪些地方才能在windosXP下编译通过这是客服端:#includestdio.h#includeerrno.h#include

这个程序需要改哪些地方才能在windosXP下编译通过
这是客服端:
#include<stdio.h>
#include<errno.h>
#include<sys/types.h>
#include<stdlib.h>
#include<string.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include <winsock2.h>
#define portnumber 3333

int main(int argc,char **argv)
{
int sockfd,new_fd;
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
struct hostent *host;
int sin_size,nbytes;
char buffer[1024];

if(argc!=2) {
printf("Usage:%s\n");
exit(1);
}

if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1) {
fprintf(stderr,"socket error\n",strerror(errno));
exit(1);
}

bzero(&server_addr ,sizeof ( server_addr));
server_addr.sin_family=AF_INET;
server_addr.sin_port=htons(portnumber);
  inet_pton(AF_INET, argv[1], &server_addr.sin_addr);

if(connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr ))==-1) {
fprintf(stderr,"connect error\n",strerror(errno));
exit(1);

}


printf("please input message \n");

fgets(buffer,1024,stdin);

write(sockfd,buffer,strlen(buffer));

close(sockfd);



}

这是服务端:

  #include<stdio.h>
  #include<errno.h>
  #include<sys/types.h>
  #include<stdlib.h>
  #include<string.h>
  #include<netinet/in.h>
  #include<sys/socket.h>
   
  #define portnumber 3333
   
  int main(int argc,char **argv)
  {
  int err,sd,new_sd,connect_sd,s_bind,s_listen;
  int sin_size,nbytes;
  char s_buffer[1024];
   
  struct sockaddr_in server_addr,client_addr;
  struct hostent *host;
  
sd=socket(AF_INET,SOCK_STREAM,0);
  if(sd==-1) {
  fprintf(stderr,"socket error\n",strerror(errno));
  exit(1);
  }
  
  bzero(&server_addr,sizeof(struct sockaddr_in));
  server_addr.sin_family=AF_INET;
  server_addr.sin_addr.s_addr=htonl(INADDR_ANY);
  server_addr.sin_port=htons(portnumber);
  
  s_bind=bind(sd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr));
  if(s_bind==-1) {
  fprintf(stderr,"bind error:\n",strerror(errno));
  exit(1);
  }
  
  
  s_listen=listen(sd,5);
  if(s_listen) {
  fprintf(stderr,"listen error:\n",strerror(errno));
  exit(1);
  }
  
  while(1) {
  sin_size=sizeof(struct sockaddr);
  new_sd=accept(sd,(struct sockaddr *)(&client_addr),&sin_size);
  if(new_sd==-1) {
  fprintf(stderr,"accept error :\n",strerror(errno));
  exit(1);
  }
  
  nbytes=read(new_sd,s_buffer,10);
  if(nbytes==-1) {
  fprintf(stderr,"read error\n",strerror(errno));
  exit(1);
  }
  
  s_buffer[nbytes]='\0';
  
  printf("recive:%s",s_buffer);
   
close(new_sd);
  
  }
  
  close(sd);
  return 0;
  }










[解决办法]
你的程序最好在linux下运行吧。比如inet_pton函数在XP下是没有的,需要自己编写的。MSDNhttp://msdn.microsoft.com/en-us/library/cc805844(VS.85).aspx

热点排行