第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

作業(yè)社區(qū)

探索學(xué)習(xí)新天地,共享知識(shí)資源!

0 提交作業(yè)
0個(gè) 布置作業(yè)
0 滿分作業(yè)
得分 100
學(xué)習(xí)任務(wù)

北城半夏4806197 的學(xué)生作業(yè):

tcp_socket.c #include "tcp_socket.h" #define BACKLOG 10 int create_tcp_server_socket(const char *ip, unsigned short port) { int sfd; int ret; struct sockaddr_in server_addr; socklen_t len = sizeof(struct sockaddr_in); // 1、創(chuàng)建套接字 sfd = socket(AF_INET, SOCK_STREAM, 0); if (sfd == -1) { DEBUG_INFO("[ERROR] socket:%s\n", strerror(errno)); return -1; } bzero(&server_addr, len); // 地址族/協(xié)議族 與socket函數(shù)第一個(gè)參數(shù)相同 server_addr.sin_family = AF_INET; server_addr.sin_port = htons(port); server_addr.sin_addr.s_addr = inet_addr(ip); // 2、綁定ip,端口號(hào) ret = bind(sfd, (const struct sockaddr *)&server_addr, len); if (ret == -1) { DEBUG_INFO("[ERROR] bind():%s\n", strerror(errno)); return -1; } // 3、設(shè)置套接字為監(jiān)聽狀態(tài),建立監(jiān)聽隊(duì)列,如果服務(wù)端處理不過來的話,會(huì)把客戶端連接請(qǐng)求緩存在監(jiān)聽隊(duì)列里,如果超過最大隊(duì)列數(shù)量,那么會(huì)被拒絕連接 ret = listen(sfd, BACKLOG); if (ret == -1) { DEBUG_INFO("[ERROR] listen():%s\n", strerror(errno)); return -1; } return sfd; } int create_tcp_client_socket(const char *svr_ip,const unsigned short svr_port) { int ret; int sfd; struct sockaddr_in svr_addr; // 創(chuàng)建套接字 sfd = socket(AF_INET,SOCK_STREAM,0); if (sfd == -1){ DEBUG_INFO("[ERROR]: %s",strerror(errno)); return -1; } bzero(&svr_addr,sizeof(svr_addr)); svr_addr.sin_family = AF_INET; svr_addr.sin_port = htons(svr_port); svr_addr.sin_addr.s_addr = inet_addr(svr_ip); // 連接服務(wù)器 ret = connect(sfd,(const struct sockaddr *)&svr_addr,sizeof(struct sockaddr)); if (ret == -1){ DEBUG("[ERROR]: %s",strerror(errno)); return -1; } DEBUG_INFO("[INFO]: Connect %s succeeded.\n",svr_ip); return sfd; } int wait_for_connect(int sfd,struct sockaddr_in *cli_addr) { int cfd; socklen_t len = sizeof(struct sockaddr_in); cfd = accept(sfd,(struct sockaddr *)cli_addr,&len); if (cfd == -1){ DEBUG_INFO("[ERROR]: %s",strerror(errno)); return -1; } return cfd; } void show_tcp_network_address(struct sockaddr_in *sockaddr) { printf("ip : %s\n",inet_ntoa(sockaddr->sin_addr)); printf("port : %d\n",ntohs(sockaddr->sin_port)); } ssize_t tcp_send_pack(int sockfd,const void *buf,size_t len) { return send(sockfd,buf,len,0); } ssize_t tcp_recv_pack(int sockfd,void *buf,size_t len ) { return recv(sockfd,buf,len,0); } tcp_socket.h #ifndef __TCP_SOCKET_H_ #define __TCP_SOCKET_H_ #include #include #include #include /* See NOTES */ #include #include #include #include // 創(chuàng)建并初始化 tcp 服務(wù)器 socket extern int create_tcp_server_socket(const char *ip,unsigned short port); extern int create_tcp_client_socket(const char *svr_ip,const unsigned short svr_port); extern int wait_for_connect(int sfd,struct sockaddr_in *cli_addr); extern void show_tcp_network_address(struct sockaddr_in *sockaddr); extern ssize_t tcp_send_pack(int sockfd,const void *buf,size_t len); extern ssize_t tcp_recv_pack(int sockfd,void *buf,size_t len ); #endif

得分 100
學(xué)習(xí)任務(wù)

北城半夏4806197 的學(xué)生作業(yè):

tcp_sockdet.c #include "tcp_socket.h" #define BACKLOG 10 int create_tcp_server_socket(const char *ip, unsigned short port) { int sfd; int ret; struct sockaddr_in server_addr; socklen_t len = sizeof(struct sockaddr_in); // 1、創(chuàng)建套接字 sfd = socket(AF_INET, SOCK_STREAM, 0); if (sfd == -1) { DEBUG_INFO("[ERROR] socket:%s\n", strerror(errno)); return -1; } bzero(&server_addr, len); // 地址族/協(xié)議族 與socket函數(shù)第一個(gè)參數(shù)相同 server_addr.sin_family = AF_INET; server_addr.sin_port = htons(port); server_addr.sin_addr.s_addr = inet_addr(ip); // 2、綁定ip,端口號(hào) ret = bind(sfd, (const struct sockaddr *)&server_addr, len); if (ret == -1) { DEBUG_INFO("[ERROR] bind():%s\n", strerror(errno)); return -1; } // 3、設(shè)置套接字為監(jiān)聽狀態(tài),建立監(jiān)聽隊(duì)列,如果服務(wù)端處理不過來的話,會(huì)把客戶端連接請(qǐng)求緩存在監(jiān)聽隊(duì)列里,如果超過最大隊(duì)列數(shù)量,那么會(huì)被拒絕連接 ret = listen(sfd, BACKLOG); if (ret == -1) { DEBUG_INFO("[ERROR] listen():%s\n", strerror(errno)); return -1; } return sfd; } int create_tcp_client_socket(const char *svr_ip,const unsigned short svr_port) { int ret; int sfd; struct sockaddr_in svr_addr; // 創(chuàng)建套接字 sfd = socket(AF_INET,SOCK_STREAM,0); if (sfd == -1){ DEBUG_INFO("[ERROR]: %s",strerror(errno)); return -1; } bzero(&svr_addr,sizeof(svr_addr)); svr_addr.sin_family = AF_INET; svr_addr.sin_port = htons(svr_port); svr_addr.sin_addr.s_addr = inet_addr(svr_ip); // 連接服務(wù)器 ret = connect(sfd,(const struct sockaddr *)&svr_addr,sizeof(struct sockaddr)); if (ret == -1){ DEBUG("[ERROR]: %s",strerror(errno)); return -1; } DEBUG_INFO("[INFO]: Connect %s succeeded.\n",svr_ip); return sfd; } int wait_for_connect(int sfd,struct sockaddr_in *cli_addr) { int cfd; socklen_t len = sizeof(struct sockaddr_in); cfd = accept(sfd,(struct sockaddr *)cli_addr,&len); if (cfd == -1){ DEBUG_INFO("[ERROR]: %s",strerror(errno)); return -1; } return cfd; } tcp_socket.h #ifndef __TCP_SOCKET_H_ #define __TCP_SOCKET_H_ #include #include #include #include /* See NOTES */ #include #include #include #include // 創(chuàng)建并初始化 tcp 服務(wù)器 socket extern int create_tcp_server_socket(const char *ip,unsigned short port); extern int create_tcp_client_socket(const char *svr_ip,const unsigned short svr_port); extern int wait_for_connect(int sfd,struct sockaddr_in *cli_addr); #endif

得分 100
學(xué)習(xí)任務(wù)

北城半夏4806197 的學(xué)生作業(yè):

#include "tcp_socket.h" #define BACKLOG 10 int create_tcp_server_socket(const char *ip, unsigned short port) { int sfd; int ret; struct sockaddr_in server_addr; socklen_t len = sizeof(struct sockaddr_in); // 1、創(chuàng)建套接字 sfd = socket(AF_INET, SOCK_STREAM, 0); if (sfd == -1) { DEBUG_INFO("[ERROR] socket:%s\n", strerror(errno)); return -1; } bzero(&server_addr, len); // 地址族/協(xié)議族 與socket函數(shù)第一個(gè)參數(shù)相同 server_addr.sin_family = AF_INET; server_addr.sin_port = htons(port); server_addr.sin_addr.s_addr = inet_addr(ip); // 2、綁定ip,端口號(hào) ret = bind(sfd, (const struct sockaddr *)&server_addr, len); if (ret == -1) { DEBUG_INFO("[ERROR] bind():%s\n", strerror(errno)); return -1; } // 3、設(shè)置套接字為監(jiān)聽狀態(tài),建立監(jiān)聽隊(duì)列,如果服務(wù)端處理不過來的話,會(huì)把客戶端連接請(qǐng)求緩存在監(jiān)聽隊(duì)列里,如果超過最大隊(duì)列數(shù)量,那么會(huì)被拒絕連接 ret = listen(sfd, BACKLOG); if (ret == -1) { DEBUG_INFO("[ERROR] listen():%s\n", strerror(errno)); return -1; } return sfd; } #ifndef __TCP_SOCKET_H_ #define __TCP_SOCKET_H_ #include #include #include #include /* See NOTES */ #include #include #include #include // 創(chuàng)建并初始化 tcp 服務(wù)器 socket extern int create_tcp_server_socket(const char *ip,unsigned short port); #endif #ifndef _DEBUG_H_ #define _DEBUG_H_ // 輸出 DEBUG 調(diào)試信息 #define DEBUG_INFO(args...) do{ \ char b__[1024];\ sprintf(b__,args);\ fprintf(stderr,"[%s,%s,%d] : %s",__FILE__,__FUNCTION__,__LINE__,b__); \ while(0) #endif

得分 100
學(xué)習(xí)任務(wù)

北城半夏4806197 的學(xué)生作業(yè):

#include #include #include #include #include /* See NOTES */ #include #include #include #include #include #include #define BACKLOG 10 //listen長(zhǎng)度 void do_sigchld_handler(int sig) { wait(NULL);// 當(dāng)子進(jìn)程退出時(shí),調(diào)用 wait 函數(shù)釋放空間 } void *do_process(void *arg) { ssize_t rbytes = 0,sbytes=0; char buffer[1024] = {0}; int cfd = *(int *)arg; //從客戶端發(fā)送數(shù)據(jù) memset(buffer,0,sizeof(buffer)); rbytes = recv(cfd,buffer,sizeof(buffer),0); if(rbytes == -1) { perror("[ERROR] recv():"); pthread_exit(NULL); } else if(rbytes == 0) { printf("The server hsa been shut down.\n"); pthread_exit(NULL); } else if(rbytes > 0) { sbytes = send(cfd,buffer,sizeof(buffer),0); if(sbytes == -1) { perror("[ERROR] send():"); pthread_exit(NULL); } } pthread_exit(NULL); } int main(int argc, char const *argv[]) { int sfd,ret,cfd; int optval = 1; struct sockaddr_in svr_addr,cli_addr; socklen_t len = sizeof(struct sockaddr_in); ssize_t rbytes = 0,sbytes=0; char buffer[1024] = {0}; pid_t cpid; pthread_t tid; __sighandler_t retsig; retsig = signal(SIGCHLD,do_sigchld_handler); if (retsig == SIG_ERR){ perror("[ERROR] signal(): "); exit(EXIT_FAILURE); } if(argc < 3) { fprintf(stderr,"Usage : %s ip port!\n",argv[0]); exit(EXIT_FAILURE); } sfd = socket(AF_INET,SOCK_STREAM,0); if(sfd == -1) { perror("[ERROR] socket():"); exit(EXIT_FAILURE); } bzero(&svr_addr,sizeof(svr_addr)); //清零 svr_addr.sin_family = AF_INET; svr_addr.sin_port = htons(atoi(argv[2])); svr_addr.sin_addr.s_addr = htonl(INADDR_ANY); //綁定ip地址與端口號(hào) ret = bind(sfd,(const struct sockaddr *)&svr_addr, sizeof(struct sockaddr_in)); if (ret == -1) { perror("[ERROR] bind()"); exit(EXIT_FAILURE); } //設(shè)置套接字為監(jiān)聽狀態(tài),建立監(jiān)聽隊(duì)列 ret = listen(sfd,BACKLOG); if(ret == -1) { perror("[ERROR] listen():"); exit(EXIT_FAILURE); } for(;;) { //建立連接,并產(chǎn)生新的客戶端套接字cfd用于數(shù)據(jù)收發(fā) cfd = accept(sfd,(struct sockaddr *)&cli_addr,&len); if(cfd == -1) { perror("[ERROR] accept():"); exit(EXIT_FAILURE); } printf("ip : %s , port : %d\n",inet_ntoa(cli_addr.sin_addr),ntohs(cli_addr.sin_port)); ret = pthread_create(&tid,NULL,do_process,(void *)&cfd); if(ret != 0) { fprintf(stderr,"[ERROE] pthread_create( ):%s\n",strerror(ret)); exit(EXIT_FAILURE); } pthread_detach(tid); } return 0; } 【圖片】

得分 100
學(xué)習(xí)任務(wù)

北城半夏4806197 的學(xué)生作業(yè):

#include #include #include #include #include /* See NOTES */ #include #include #include #define LISTEN_SZ 10 int main(int argc,char *argv[]) { if (argc != 3){ fprintf(stderr,"usage : %s < ip > < port >.\n",argv[0]); exit(EXIT_FAILURE); } int sfd,ret,cfd; struct sockaddr_in svr_addr,cli_addr; int length; int receve_total; ssize_t sbytes,rbytes; char buffer[1024] = {0}; sfd = socket(AF_INET,SOCK_STREAM,0); if (sfd == -1){ perror("[ERROR] socket(): "); exit(EXIT_FAILURE); } bzero(&svr_addr,sizeof(struct sockaddr_in)); svr_addr.sin_family = AF_INET; svr_addr.sin_port = htons(atoi(argv[2])); svr_addr.sin_addr.s_addr = inet_addr(argv[1]); ret = bind(sfd,(const struct sockaddr *)&svr_addr,sizeof(struct sockaddr_in)); if (ret == -1){ perror("[ERROR] bind(): "); close(sfd); exit(EXIT_FAILURE); } ret = listen(sfd,LISTEN_SZ); if (ret == -1){ perror("[ERROR] listen(): "); close(sfd); exit(EXIT_FAILURE); } socklen_t len = sizeof(struct sockaddr_in); bzero(&cli_addr,sizeof(struct sockaddr)); cfd = accept(sfd,(struct sockaddr *)&cli_addr,&len); if (cfd == -1){ perror("[ERROR] accept(): "); exit(EXIT_FAILURE); } printf("ip : %s,port : %d\n",inet_ntoa(cli_addr.sin_addr),ntohs(cli_addr.sin_port)); for(;;){ length = 0; receve_total = 0; //接收數(shù)據(jù)的長(zhǎng)度 rbytes = recv(cfd,&length,4,0); if (rbytes == -1){ perror("[ERROR] Failed to recv."); exit(EXIT_FAILURE); } for(;;){ rbytes = recv(cfd,buffer + receve_total,length - receve_total,0); if (rbytes == -1){ perror("[ERROR] Failed to recv."); exit(EXIT_FAILURE); }else if (rbytes == 0){ printf("The client has been shutdown.\n"); }else if (rbytes > 0){ receve_total += rbytes; if (receve_total == length) break; } } printf("buffer : %s\n",buffer); sleep(1); } close(sfd); return 0; } #include #include #include #include #include #include #include /* See NOTES */ #include int main(int argc,char *argv[]) { int sfd,ret; ssize_t sbytes = 0,rbytes = 0; socklen_t length; char sbuffer[1024] = "hello,world"; char *pbuffer = NULL; struct sockaddr_in svr_addr; if (argc != 3){ fprintf(stderr,"Usage : %s < ip > < port >.\n",argv[0]); return -1; } sfd = socket(AF_INET,SOCK_STREAM,0); if (sfd == -1){ perror("[ERROR] socket(): "); exit(EXIT_FAILURE); } printf("sfd = %d\n",sfd); bzero(&svr_addr,sizeof(svr_addr)); svr_addr.sin_family = AF_INET; svr_addr.sin_port = htons(atoi(argv[2])); svr_addr.sin_addr.s_addr = inet_addr(argv[1]); ret = connect(sfd,(const struct sockaddr *)&svr_addr,sizeof(struct sockaddr)); if (ret == -1){ perror("[ERROR] connect():"); exit(EXIT_FAILURE); } for(;;){ length = strlen(sbuffer); // 計(jì)算發(fā)送數(shù)據(jù)的長(zhǎng)度 pbuffer = (char *)malloc(length + 4); // 分配空間,包含長(zhǎng)度空間 與數(shù)據(jù)空間 memcpy(pbuffer,&length,4); //拷貝長(zhǎng)度到緩沖區(qū)中 memcpy(pbuffer + 4,sbuffer,length); // 拷貝數(shù)據(jù)到緩沖區(qū)中 sbytes = send(sfd,pbuffer,length + 4,0); // 發(fā)送數(shù)據(jù)給服務(wù)器 if (ret == -1){ perror("[ERROR] Failed to send."); exit(EXIT_FAILURE); } usleep(100); } close(sfd); return 0; } 【圖片】

微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)