linux 无线网卡socket编程出错
大家好,小弟最近做网络编程的一些东西。主要想实现arm端和笔记本电脑端进行通讯,二者通过无线网卡来进行,通过一个公共的无线路由来连接,现在的问题是原来用有线网络可以调通的程序,换成无线网络就不行了,可以相互ping的通,不知什么原因。之前有用过另外一款网线网卡,和笔记本进行点对点连接是可以的,也就是说哦不走外网的话程序也是能行的。以下是手法两端的程序:
server:
#include <sys/types.h>
#include<stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <netinet/in.h>
#include <sys/socket.h>
#define SERVPORT 3333
#define BACKLOG 10
#define MAX_CONNECTED_NO 10
#define MAXDATASIZE 10
int main()
{
   struct sockaddr_in server_sockaddr,client_sockaddr;
   int sin_size,recvbytes;
   int sockfd,client_fd,i;
   char buf[MAXDATASIZE];
/*建立一个socket*/
   if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){
     perror("socket error");
     exit(1);
   }
   printf("socket success!,sockfd=%d\n",sockfd);
/*设置相关参数*/
   server_sockaddr.sin_family=AF_INET;
   server_sockaddr.sin_port=htons(SERVPORT);
   server_sockaddr.sin_addr.s_addr=INADDR_ANY; //0.0.0.0
   bzero(&(server_sockaddr.sin_zero),8);
/*绑定函数bind*/
   if(bind(sockfd,(struct sockaddr *)&server_sockaddr,sizeof(struct sockaddr))==-1){  
     perror("bind error");
     exit(1);   
   }
   printf("bind success!\n");
/*调用listen,backlog表示主机允许多少个从机与之连接进行传输*/
   if(listen(sockfd,BACKLOG)==-1){
     perror("listen error");
     exit(1);   
   }
   printf("listen...\n");
/*调用accept,等待客户端的连接*/
   sin_size=sizeof(client_sockaddr);
   if((client_fd=accept(sockfd,(struct sockaddr *)&client_sockaddr,&sin_size))==-1){
     perror("accept error"); //clientfd = accept(socketfd, (struct sockaddr *)&clientAdd, &len))  
     exit(1);   
   }
   while(1)
   {
     if((recvbytes=recv(client_fd,buf,MAXDATASIZE,0))==-1){
       perror("recv error");
       exit(1);   
     }   
     if((buf[0]=='&')&&(buf[8]=='\n'))
     {
       for(i=1;i<MAXDATASIZE-2;i++)
         printf("%d ",buf[i]);
       printf("\n");
       //sleep(1);  
     }
   }
}
client:
/****************************************************************************   
【文  件  名  称】client.c   
【功  能  描  述】三星S3C2440A板无线网卡程序代码   
【程  序  版  本】1.0  
【创建人及创建日期】耿海飞( Grant )//2009年6月7日14:40   
****************************************************************************/  
#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <stddef.h>
#include <unistd.h>
#include "pthread.h"
#define SERVPORT 3333     //必须和主机保持一致
#define MAXDATASIZE 10
pthread_mutex_t mutex;
char buf[MAXDATASIZE];//存放拟合系数
int sockfd,sendbytes;
void initnetwork(void)
{
   struct hostent *host;
   struct sockaddr_in serv_addr;
//解析主机地址
   if((host=gethostbyname("202.38.214.100"))==NULL){
     perror("gethostbyname error");
     exit(1);
   }
   printf("Host name:%s\n", host->h_name);
   printf("IP Addres