当前位置: 技术问答>linux和unix
linux 无线网卡socket编程出错
来源: 互联网 发布时间:2016-11-09
本文导语: 大家好,小弟最近做网络编程的一些东西。主要想实现arm端和笔记本电脑端进行通讯,二者通过无线网卡来进行,通过一个公共的无线路由来连接,现在的问题是原来用有线网络可以调通的程序,换成无线网络就不行...
大家好,小弟最近做网络编程的一些东西。主要想实现arm端和笔记本电脑端进行通讯,二者通过无线网卡来进行,通过一个公共的无线路由来连接,现在的问题是原来用有线网络可以调通的程序,换成无线网络就不行了,可以相互ping的通,不知什么原因。之前有用过另外一款网线网卡,和笔记本进行点对点连接是可以的,也就是说哦不走外网的话程序也是能行的。以下是手法两端的程序:
server:
#include
#include
#include
#include
#include
#include
#include
#include
#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=%dn",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;ih_name);
printf("IP Address:%sn",inet_ntoa(*((struct in_addr *)host->h_addr)));
//建立一个socket
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){
perror("socket error");
exit(1);
}
//设置服务器端sockaddr_in的相关参数
serv_addr.sin_family=AF_INET;
serv_addr.sin_port=htons(SERVPORT);
serv_addr.sin_addr=*((struct in_addr*)host->h_addr);
bzero(&(serv_addr.sin_zero),8);
//调用connect主动发起对服务器端的连接
while(connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr))==-1);
}
void senddata(void)
{
int i=0;
while(1)
{
pthread_mutex_lock(&mutex);
//发送信息给服务器
if((sendbytes=send(sockfd,buf,sizeof(buf),0))==-1){
perror("send error");
exit(1);
}
i+=sendbytes;
sendbytes=0;
printf("send %d bytesn",i);
pthread_mutex_unlock(&mutex);
}
}
void receivedata(void)
{
while(1)
{
pthread_mutex_lock(&mutex);
//发送信息给服务器
if((sendbytes=recv(sockfd,buf,sizeof(buf),0))==-1){
perror("receive error");
exit(1);
}
pthread_mutex_unlock(&mutex);
}
}
//opencv
void opencvdata(void)
{
int i,j;
j=0;
while(1)
{
pthread_mutex_lock(&mutex);
//模拟拟合系数
for(i=1;i
server:
#include
#include
#include
#include
#include
#include
#include
#include
#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=%dn",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;ih_name);
printf("IP Address:%sn",inet_ntoa(*((struct in_addr *)host->h_addr)));
//建立一个socket
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){
perror("socket error");
exit(1);
}
//设置服务器端sockaddr_in的相关参数
serv_addr.sin_family=AF_INET;
serv_addr.sin_port=htons(SERVPORT);
serv_addr.sin_addr=*((struct in_addr*)host->h_addr);
bzero(&(serv_addr.sin_zero),8);
//调用connect主动发起对服务器端的连接
while(connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr))==-1);
}
void senddata(void)
{
int i=0;
while(1)
{
pthread_mutex_lock(&mutex);
//发送信息给服务器
if((sendbytes=send(sockfd,buf,sizeof(buf),0))==-1){
perror("send error");
exit(1);
}
i+=sendbytes;
sendbytes=0;
printf("send %d bytesn",i);
pthread_mutex_unlock(&mutex);
}
}
void receivedata(void)
{
while(1)
{
pthread_mutex_lock(&mutex);
//发送信息给服务器
if((sendbytes=recv(sockfd,buf,sizeof(buf),0))==-1){
perror("receive error");
exit(1);
}
pthread_mutex_unlock(&mutex);
}
}
//opencv
void opencvdata(void)
{
int i,j;
j=0;
while(1)
{
pthread_mutex_lock(&mutex);
//模拟拟合系数
for(i=1;i