From 1532da37f303eae6d778e872db24d003d5c9d090 Mon Sep 17 00:00:00 2001 From: spicychip <44250485+spicychip@users.noreply.github.com> Date: Sat, 4 Apr 2020 21:04:21 +0800 Subject: [PATCH 1/5] Update server.cpp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 满连接时回送客户端一个消息; 修改了一点数值上的小bug; (客户端连接释放后,剩余资源怎么+1呢,只能按顺序连5个呢...hh^^) --- select/server.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/select/server.cpp b/select/server.cpp index 20584de..1399016 100644 --- a/select/server.cpp +++ b/select/server.cpp @@ -13,7 +13,7 @@ int main(int argc, char** argv) { - int serverfd, acceptfd; + int serverfd,; struct sockaddr_in my_addr; //服务端 struct sockaddr_in their_addr; //客户端 unsigned int sin_size, myport = 6666, lisnum = 10; @@ -77,9 +77,9 @@ int main(int argc, char** argv) { if(FD_ISSET(client_sockfd[i], &client_fdset)) { - printf("start recv from client[%d]:\n, i"); + printf("start recv from client[%d]:\n", i); ret = recv(client_sockfd[i], buffer, 1024, 0); - if(ret<0) + if(ret<=0) //包含零 { printf("client[%d] close\n", i); close(client_sockfd[i]); @@ -106,7 +106,7 @@ int main(int argc, char** argv) bzero(buffer, 1024); strcpy(buffer, "this is a server! welcome!\n"); send(sock_client, buffer, 1024, 0); //把内容传给新来的客户端 - printf("new connection client[%d] %s:%d\n", conn_amount, inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port)); + printf("new connection client[%d] %s:%d\n", conn_amount-1, inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port)); bzero(buffer, sizeof(buffer)); ret = recv(sock_client, buffer, 1024, 0); if(ret<0) @@ -123,6 +123,12 @@ int main(int argc, char** argv) printf("max connections!!!quit!!\n"); break; } + }else{ //满连接处理 + bzero(buffer, 1024); + strcpy(buffer, "Sorry, server connection is full."); + send(sock_client, buffer, 1024, 0); + bzero(buffer, sizeof(buffer)); + close(sock_client); } } } From c5a0f17b57bc7853a78aad00b1f75040a687ef3d Mon Sep 17 00:00:00 2001 From: spicychip <44250485+spicychip@users.noreply.github.com> Date: Sat, 4 Apr 2020 21:07:15 +0800 Subject: [PATCH 2/5] Update client.cpp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 客户端发送用fgets输入带空格字符串; --- select/client.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/select/client.cpp b/select/client.cpp index b34db89..f08ed5c 100644 --- a/select/client.cpp +++ b/select/client.cpp @@ -42,7 +42,7 @@ int main(int argc, char* argv[]) while(1) { bzero(buffer, sizeof(buffer)); - scanf("%s", buffer); + fgets(buffer, 1024, stdin); int p = strlen(buffer); buffer[p] = '\0'; send(connfd, buffer, 1024, 0); From bafa0efe05e1f24edea4d4b4dd40ae65bd808107 Mon Sep 17 00:00:00 2001 From: spicychip <44250485+spicychip@users.noreply.github.com> Date: Sat, 4 Apr 2020 21:21:08 +0800 Subject: [PATCH 3/5] Update server.cpp --- select/server.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/select/server.cpp b/select/server.cpp index 1399016..598a69a 100644 --- a/select/server.cpp +++ b/select/server.cpp @@ -15,7 +15,6 @@ int main(int argc, char** argv) { int serverfd,; struct sockaddr_in my_addr; //服务端 - struct sockaddr_in their_addr; //客户端 unsigned int sin_size, myport = 6666, lisnum = 10; if((serverfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { From 56026e05f258288ab0a96d601b22313c47ccbf35 Mon Sep 17 00:00:00 2001 From: spicychip <44250485+spicychip@users.noreply.github.com> Date: Sun, 5 Apr 2020 23:21:44 +0800 Subject: [PATCH 4/5] Update server.cpp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit i i<=maxi(小bug,最新的客户端无法轮询); fprintf(stdout, ...)在换行'\n'时才输出; --- poll/server.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/poll/server.cpp b/poll/server.cpp index 2bf11bb..5062fea 100644 --- a/poll/server.cpp +++ b/poll/server.cpp @@ -106,12 +106,13 @@ void do_poll(int listenfd) char buf[MAXLINE]; memset(buf, 0, MAXLINE); int readlen = 0; - for(i = 1; i Date: Sun, 5 Apr 2020 23:23:44 +0800 Subject: [PATCH 5/5] Update client.cpp --- poll/client.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/poll/client.cpp b/poll/client.cpp index ef2e901..24f4693 100644 --- a/poll/client.cpp +++ b/poll/client.cpp @@ -68,6 +68,7 @@ static void handle_connection(int sockfd) } if(pfds[1].revents & POLLIN) { + fprintf(stderr, "echo:"); n = read(STDIN_FILENO, sendline, MAXLINE); if(n == 0) {