📄 sock_lib.c
字号:
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <netdb.h>#include <time.h>#include <string.h>#define HOSTLEN 256#define MAX_QUE_CONN_NM 5int make_server_socket_q(int, int);int make_server_socket(int portnum){ return make_server_socket_q(portnum, BACKLOG);}int make_server_socket_q(int portnum, int backlog){ struct sockaddr_in saddr; struct hostent *hp; char hostname[HOSTLEN]; int sock_id; sock_id = socket(PF_INET, SOCK_STREAM, 0); if(sock_id == -1) return -1; bzero((void *)&saddr, sizeof(saddr)); gethostname(hostname, HOSTLEN); saddr.sin_port = htons(portnum); saddr.sin_family = AF_INET; if(bind(sock_id, (struct sockaddr *)&saddr, sizeof(saddr)) != 0) return -1; if(listen(sock_id, backlog) != 0) return -1; return sock_id; }int start_server(int portnum)
{
struct sockaddr_in server_sockaddr, client_sockaddr;
int sin_size, recvbytes; int sockfd, client_fd; char buf[BUFFER_SIZE];
/*建立socket连接*/
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
perror("socket"); return -1;
}
/*设置sockaddr_in 结构体中相关参数*/
server_sockaddr.sin_family = AF_INET; server_sockaddr.sin_port = htons(portnum); server_sockaddr.sin_addr.s_addr = INADDR_ANY; bzero(&(server_sockaddr.sin_zero), 8); int i = 1;/* 使得重复使用本地地址与套接字进行绑定 */ setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &i, sizeof(i)); /* 调用绑定函数 */ if (bind(sockfd, (struct sockaddr *)&server_sockaddr, sizeof(struct sockaddr)) == -1) { perror("bind"); return -1; } if (listen(sockfd, MAX_QUE_CONN_NM) == -1) /* 调用listen函数*/ { perror("listen"); return -1; } return sockfd;
}
int connet_to_server(char *host, int portnum){ int sock; struct sockaddr_in servadd; struct hostent *hp; sock = socket(AF_INET, SOCK_STREAM, 0); if(sock == -1) return -1; bzero(&servadd, sizeof(servadd)); hp = gethostbyname(host); if(hp == NULL) return -1; bcopy(hp->h_addr, (struct sockaddr *)&servadd.sin_addr, hp->h_length); servadd.sin_port = htons(portnum); servadd.sin_family = AF_INET; if(connect(sock, (struct sockaddr *)&servadd, sizeof(servadd)) != 0) return -1; return sock; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -