📄 sockclient.c
字号:
#include "sockclient.h"#include <unistd.h>#include <fcntl.h>#include <sys/stat.h>#include <time.h>extern serv_addr[16];extern struct sockaddr_in addr;extern int sockfd;extern int serv_port;extern HWND hclient;void initsocket(void){ struct hostent *host; if((host=gethostbyname(serv_addr))==NULL) { MessageBox(NULL, "gethostbyname error", "aa", MB_OK); return; } if((sockfd=socket(AF_INET, SOCK_STREAM, 0))==-1) { MessageBox(NULL, "socket error", "aa", MB_OK); return; } fcntl(sockfd, F_SETFL, O_NONBLOCK); addr.sin_family=AF_INET; addr.sin_port=htons(serv_port); addr.sin_addr=*((struct in_addr*)host->h_addr); bzero(&(addr.sin_zero), 8); connect(sockfd, (struct sockaddr*)&addr, sizeof(struct sockaddr)); int file = open("addrname", O_CREAT | O_RDONLY, 0600); char name[18]; memset(name, 0, 18); int n = read(file, name, 18); if( n != 18 ) send(sockfd, STR_NAME, 14, 0 ); else send(sockfd, name, 18, 0 ); close(file); char *buf=(char*)malloc(50); memset(buf, '\0', 50); fd_set fdset; struct timeval tv; tv.tv_sec=4; tv.tv_usec=0; FD_ZERO(&fdset); FD_SET(sockfd, &fdset); while(FD_ISSET(sockfd, &fdset)) { if(select(sockfd+1, &fdset, NULL, NULL, &tv)<0) perror("select"); else { if(FD_ISSET(sockfd, &fdset)) { if(7 == recv(sockfd, buf, 7, MSG_WAITALL)) perror("recv"); SetDlgItemText(hclient, 2, "connected"); free(buf); return; } else SetDlgItemText(hclient, 2, "no connect"); return; } } return;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -