📄 csock.cpp
字号:
#include "csock.h"#include<sys/socket.h>#include<sys/types.h>#include<iostream>#include<unistd.h>#include<netinet/in.h>#include<arpa/inet.h>#include<cstring>#include<cstdlib>#include<cerrno>using namespace std;//constructorcsock::csock(){ sockfd_conn = 0; sockfd_listen = 0; port = 0;}csock::~csock(){}//initialize serverint csock::init_server(char* ip, char* port){ int ret_val = 0; sockaddr_in tempaddr; socklen_t templen; sockfd_listen = socket(AF_INET,SOCK_STREAM,0); if(sockfd_listen == -1) { perror("socket"); return -1; } bzero(&servaddr,sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = 0; ret_val = bind(sockfd_listen,(struct sockaddr*)&servaddr,sizeof(servaddr)); if(ret_val == -1) { perror("bind"); return -1; } templen = sizeof(struct sockaddr); ret_val = getsockname(sockfd_listen,(struct sockaddr*)&tempaddr,&templen); if(ret_val == -1) { perror("getsockname"); return -1; } ret_val = listen(sockfd_listen,10); if(ret_val == -1) { perror("listen fail!"); return -1; } cout << "Server is listening on port:" << ntohs(tempaddr.sin_port) << endl; cout << "Server is listening at:" << ip << " " << port << endl; sock_type = 0; return sockfd_listen;}//initialize clientint csock::init_client(char* ip,char* port){ int ret_val = 0; bzero(&servaddr,sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(atoi(port)); ret_val = inet_pton(AF_INET,ip,&servaddr.sin_addr); if(ret_val == -1) { perror("inet_pton"); return -1; } sockfd_conn = socket(AF_INET,SOCK_STREAM,0); if(sockfd_conn == -1) { perror("sock"); return -1; } sock_type = 1; return sockfd_conn;}//acceptint csock::caccept(){ struct sockaddr_in cliaddr; socklen_t clilen; bzero(&cliaddr,clilen); clilen = sizeof(cliaddr); int ret_val; ret_val = accept(sockfd_listen,(struct sockaddr*)&cliaddr,&clilen); if(ret_val == -1) { perror("accept"); } return ret_val;}//connectint csock::cconnect(){ int ret_val; ret_val = connect(sockfd_conn,(struct sockaddr*)&servaddr,sizeof(servaddr)); if(ret_val == -1) { perror("connect"); return -1; } return sockfd_conn;}//close_connvoid csock::close_conn(){ close(sockfd_conn);}//close_listenvoid csock::close_listen(){ close(sockfd_listen);}//original csendint csock::csend(int sockfd,char* buffer,int size){ int ret_val = 0; ret_val = write(sockfd,buffer,size); if(ret_val == -1) { perror("Send"); } return ret_val;}//original crecvint csock::crecv(int sockfd,char* buffer,int size){ int ret_val = 0; ret_val = read(sockfd,buffer,size); if(ret_val == -1) { perror("recv"); } else { buffer[size] = '\0'; } return ret_val;}//convinient csendint csock::csend(char* buffer){ int size = strlen(buffer); int ret_val; ret_val = csend(sockfd_conn,buffer,size); return ret_val;}//convinient crecvint csock::crecv(char* buffer,int size){ int ret_val; ret_val = crecv(sockfd_conn,buffer,size); return ret_val;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -