- 论坛徽章:
- 0
|
#include <unistd.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <netinet/in.h>
#include <mysql/mysql.h>
#include <signal.h>
#include <errno.h>
#include <syslog.h>
#include <time.h>
#define MAX 0
int main()
{
int opt =1;
int sockSrv = socket(AF_INET,SOCK_DGRAM,0);
//setsockopt(sockSrv, SOL_SOCKET, SO_REUSEADDR, (const void*)&opt, sizeof(opt));
sockaddr_in addrSrv;
addrSrv.sin_addr.s_addr=htonl(INADDR_ANY);//本地地址转换成网络长字节
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(8888);//本地字节转换成网络字节
bind(sockSrv,(sockaddr*)&addrSrv,sizeof(sockaddr));
char recvBuf[100];
char sendBuf[100];
char tempBuf[100];
sockaddr_in addrClient;
int len = sizeof(sockaddr);
printf("聊天程序服务器!!!\n");
struct timeval tv;
tv.tv_sec=1;
tv.tv_usec=0;
while(1)
{
fd_set fdsocket;
FD_ZERO(&fdsocket);
FD_SET(sockSrv,&fdsocket);
if(select(MAX+1,&fdsocket,NULL,NULL,&tv))
{
if(FD_ISSET(sockSrv,&fdsocket))
{
recvfrom(sockSrv,recvBuf,100,0,(sockaddr*)&addrClient,(socklen_t *)&len); //等待接受数据
/* if('q' == recvBuf[0])
{
sendto(sockSrv,"q",strlen("q")+1,0,(sockaddr*)&addrClient,len);
printf("Chat end!\n");
break;
}
sprintf(tempBuf,"%s 说 : %s",inet_ntoa(addrClient.sin_addr),recvBuf);
printf("%s\n",tempBuf);
printf("请回复:");
gets(sendBuf);
sendto(sockSrv,sendBuf,strlen(sendBuf)+1,0,(sockaddr*)&addrClient,len);*/
}
}
}
close(sockSrv);
return 0;
}
|
|
|