⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 servconnect.c

📁 我的本科生毕业设计
💻 C
字号:
#include "servConnect.h"char tmpcon[100];int servConnect(char *s,int *SockFd,int port,GtkTextBuffer *textBuff,FILE *LogFd) /*TODO: must to modifye (textHttpBuff,httpLogFd)*/{	int SocketFd = *SockFd;	int ServerLen;	struct sockaddr_in ServerAddr;	bzero(&ServerAddr,sizeof(struct sockaddr_in));	SocketFd = socket(AF_INET,SOCK_STREAM,0);	int flags = fcntl(SocketFd,F_GETFL,0);	fcntl(SocketFd,F_SETFL,O_NONBLOCK|flags);	ServerAddr.sin_family = AF_INET;	if (inet_aton(s,&ServerAddr.sin_addr) == 0)	{		struct hostent *host;		host = gethostbyname(s);		if (host == NULL)		{			//printf("HostName Error %s\n",s);			sprintf(tmpcon,"[FAILURE] HostName Error %s\n",s);			display(textBuff,tmpcon,LogFd);			SocketFd = -1; 			*SockFd = SocketFd;			return  -1; 		}		ServerAddr.sin_addr = *(struct in_addr *)(host->h_addr_list[0]);	}	ServerAddr.sin_port = htons(port);	ServerLen = sizeof(ServerAddr);		int res;	res = 0;	struct timeval tm;	fd_set set;	int error,len;	len = sizeof(int);	if (connect(SocketFd,(struct sockaddr *)&ServerAddr,ServerLen) == -1)	{		tm.tv_sec = TIME_OUT;		tm.tv_usec = 0;		FD_ZERO(&set);		FD_SET(SocketFd,&set);		if (select(SocketFd + 1,NULL,&set,NULL,&tm) > 0)		{			getsockopt(SocketFd,SOL_SOCKET,SO_ERROR,&error,(socklen_t *)&len);			if (error == 0) res = 1;			else res = 0;		}		else res = 0;	}	else res = 0;       	if (res == 0) 	{				sprintf(tmpcon,"[FAILURE] %s disconnect.\n",s);		display(textBuff,tmpcon,LogFd);		SocketFd = -1; /* the ClientSocket[i] == -1 */		*SockFd = SocketFd;		fcntl(SocketFd,F_SETFL,~O_NONBLOCK&flags);  /*set the socket block*/		return -1; 	}	else	{		*SockFd = SocketFd;		//printf("%s can connect\n",s);		sprintf(tmpcon,"[OK] %s connect\n",s);		display(textBuff,tmpcon,LogFd);		fcntl(SocketFd,F_SETFL,~O_NONBLOCK|flags); /*set the socket block*/		return 0; 		}}int servConnect_digram(char *s,int *SockFd,struct sockaddr_in *servAddress,int port,GtkTextBuffer *textBuff,FILE *LogFd) {	int SocketFd = *SockFd;//	int ServerLen;	struct sockaddr_in ServerAddr;	bzero(&ServerAddr,sizeof(struct sockaddr_in));	SocketFd = socket(AF_INET,SOCK_DGRAM,0);	ServerAddr.sin_family = AF_INET;	if (inet_aton(s,&ServerAddr.sin_addr) == 0)	{		struct hostent *host;		host = gethostbyname(s);		if (host == NULL)		{			sprintf(tmpcon,"[FAILURE] HostName Error %s\n",s);			display(textBuff,tmpcon,LogFd);			SocketFd = -1; 			*SockFd = SocketFd;			return  -1; 		}		ServerAddr.sin_addr = *(struct in_addr *)(host->h_addr_list[0]);	}	ServerAddr.sin_port = htons(port);	*SockFd = SocketFd;	*servAddress = ServerAddr;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -