📄 servconnect.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 + -