📄 socksystem.c
字号:
#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h>#include <errno.h>#include <string.h>#include "socksystem.h"int startServer(int sockFd,int port){ struct sockaddr_in local_addr; int n=1,step=0; bzero(&local_addr,sizeof(struct sockaddr_in)); local_addr.sin_family=AF_INET; local_addr.sin_port=htons(port); local_addr.sin_addr.s_addr=htonl(INADDR_ANY); setsockopt(sockFd,SOL_SOCKET,SO_REUSEADDR,&n,sizeof(int)); if(bind(sockFd,(struct sockaddr*)&local_addr,sizeof(local_addr))<0) { printf("Bind error,reason:%s\n",strerror(errno)); return step++; } if(listen(sockFd,5)<0) { printf("Listen error,reason:%s\n",strerror(errno)); return step++; } return step;}int connectServer(int sockFd,char *serverIp,int port){ int step=0,connFlag; struct sockaddr_in dest_addr; dest_addr.sin_family=AF_INET; dest_addr.sin_port=htons(port); dest_addr.sin_addr.s_addr=inet_addr(serverIp); connFlag=connect(sockFd,(struct sockaddr*)&dest_addr, sizeof(struct sockaddr)); if(connFlag==-1) { printf("connect error,reason:%s\n",strerror(errno)); close(sockFd); return step++; } return sockFd;}void closeSock(int sockFd){ close(sockFd);}int openSock(){ int sockFd; sockFd=socket(AF_INET,SOCK_STREAM,0); if(sockFd<0) { printf("socket error,reason:%s\n",strerror(errno)); return -1; } return sockFd;}int acceptSock(int listenFd){ return accept(listenFd,NULL,NULL);}int writeSock(int sockFd,char *buf,unsigned short bufLen){ return write(sockFd,buf,bufLen);}int readSock(int sockFd,char *buf,unsigned short bufLen){ return read(sockFd,buf,bufLen);}int getPeerIp(int sockFd,char *ipaddr){ struct sockaddr_in sa; int len; len=sizeof(sa); getpeername(sockFd,(struct sockaddr*)&sa,&len); memcpy(ipaddr,(char*)inet_ntoa(sa.sin_addr),16); return len;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -