Skip to content

Commit

Permalink
12 IO复用客户端
Browse files Browse the repository at this point in the history
  • Loading branch information
NaZixia committed Mar 2, 2024
1 parent eb620ec commit 2f85add
Show file tree
Hide file tree
Showing 4 changed files with 74 additions and 3 deletions.
Binary file added 12IO复用/2IO复用客户端/client
Binary file not shown.
72 changes: 72 additions & 0 deletions 12IO复用/2IO复用客户端/client.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>

#define BUF_SIZE 1024
void error_handling(const char *message);
void suc_handling(const char *message);

int main(int argc,char *argv[])
{
int sock;
struct sockaddr_in serv_adr;
char message[BUF_SIZE];
int str_len;

int recv_len,recv_cnt;

if(argc!=2){
printf("Usage:%s<IP> <port>\n",argv[0]);
exit(1);
}

sock=socket(PF_INET,SOCK_STREAM,0);
if(sock==-1){
error_handling("error serv_sock");
}

memset(&serv_adr,0,sizeof(serv_adr));
serv_adr.sin_family=AF_INET;
serv_adr.sin_addr.s_addr=inet_addr("127.0.0.1");
serv_adr.sin_port=htons(atoi(argv[1]));

if(connect(sock,(struct sockaddr*)&serv_adr,sizeof(serv_adr))==-1)
error_handling("connect() error!");
else
puts("connect....");

while(1){
fputs("print q to quit\n",stdout);
fgets(message,sizeof(message),stdin);

if(!strcmp(message,"q\n")||!strcmp(message,"Q\n"))
break;


str_len=write(sock,message,strlen(message));

recv_len=0;
while(recv_len<str_len){
recv_cnt=read(sock,&message[recv_len],BUF_SIZE-1);
recv_len+=recv_cnt;
}
message[str_len]=0;
printf("Message from server :%s \n",message);
}
close(sock);
return 0;
}

void error_handling(const char *message){
fputs(message,stderr);
fputc('\n',stderr);
exit(1);
}

void suc_handling(const char *message){
fputs(message,stderr);
fputc('\n',stderr);
}
Binary file modified 12IO复用/2IO复用客户端/echo_mpserver
Binary file not shown.
5 changes: 2 additions & 3 deletions 12IO复用/2IO复用客户端/echo_mpserver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ int main(int argc,char *argv[])
if(fd_num==0)
continue;
fd_num=0;
for(i=0;i<fd_max+1;i++){
for(i=3;i<fd_max+1;i++){
if(FD_ISSET(i,&cpy_reads))
{
if(i==serv_sock)
Expand All @@ -69,8 +69,7 @@ int main(int argc,char *argv[])
FD_SET(clnt_sock,&reads);
if(fd_max<clnt_sock)
fd_max=clnt_sock;
int dd=clnt_sock;
printf("connect %d client\n",dd);
printf("connect %d client\n",clnt_sock);
}
else
{
Expand Down

0 comments on commit 2f85add

Please sign in to comment.