socklib.c
来自「基于三星S3C2410 LINUX的网络开发原码」· C语言 代码 · 共 66 行
C
66 行
#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 BACKLOG 1int 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 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 + =
减小字号Ctrl + -
显示快捷键?