- 论坛徽章:
- 0
|
服务器端
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <errno.h>
#include <semaphore.h>
#include <unistd.h>
#include <pthread.h>
#define PORT 8888
#define MAXSIZE 1024
int main(int argc,char *argv[])
{
int sockfd;
char send[MAXSIZE];
char recv[MAXSIZE];
socklen_t len;
struct sockaddr_in saddr,caddr;
int n=0;
len=sizeof(saddr);
bzero(&saddr,sizeof(saddr));
saddr.sin_family=AF_INET;
saddr.sin_addr.s_addr=htonl(INADDR_ANY);
saddr.sin_port=PORT;
if((sockfd=socket(AF_INET,SOCK_DGRAM,0))<0)
{
perror("socket error:");
exit(1);
}
if( bind(sockfd,(struct sockaddr *)&saddr,sizeof(saddr) )==-1 )
{
perror("bind error:");
exit(1);
}
else
{
printf("bind seccuss\n");
}
while(1)
{
printf("waiting.....\n");
n=recvfrom(sockfd,recv,MAXSIZE,0,(struct sockaddr*)&caddr,&len);
printf("n==%d\n",n);
if(n==-1)
{
perror("recv error:");
exit(1);
}
printf("allala");
printf("recv:%s",recv);
// sendto(sockfd,send,sizeof(send),0,(struct sockaddr *)&caddr,len) ;
}
exit(0);
}
客户端
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <errno.h>
#include <semaphore.h>
#include <unistd.h>
#include <pthread.h>
#define PORT 8888
#define MAXSIZE 1024
int main(int argc,char *argv[])
{
struct sockaddr_in saddr;
int sockfd;
char send[MAXSIZE];
socklen_t len;
char ip_server[]="192.168.1.103";
len=sizeof(saddr);
if((sockfd=socket(AF_INET,SOCK_DGRAM,0))==-1) /*socket建立*/
{
perror("Socket Error");
exit(1);
}
bzero(&saddr,sizeof(saddr));
saddr.sin_family=AF_INET;
saddr.sin_port=htons(PORT);
if(inet_pton(AF_INET,ip_server,&saddr.sin_addr)<=0)
{
fprintf(stderr,"IP error\n");
exit(1);
}
while(fgets(send,MAXSIZE,stdin)!=NULL)
{
printf("sdas\n");
if(sendto(sockfd,send,MAXSIZE,0,(struct sockaddr*)&saddr,len)<0) /*根本没有caddr信息*/
{
perror("S send error");
exit(1);
}
printf("sdas34\n");
}
}
现象:客户端发数据,服务器端收不到,客户端加打印后正常
初步断定为服务器端recvfrom这个函数的问题,但是不知道如何修改 ,希望高手指点阿 |
|