1. 程式人生 > 其它 >【網路程式設計】學習筆記--04 server端和client程式碼

【網路程式設計】學習筆記--04 server端和client程式碼

Server端:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<errno.h>
#include<pthread.h>
#include<ctype.h>
#include<sys/socket.h>
#include<arpa/inet.h>

#define SERV_PORT 9527

void sys_err(const char *str)
{
    perror(str);
    exit(
1); } int main(int argc,char *argv[]) { int lfd = 0,cfd = 0; int ret,i; char buf[BUFSIZ],client_IP[BUFSIZ]; struct sockaddr_in serv_addr,clit_addr; socklen_t clit_addr_len; serv_addr.sin_family = AF_INET; serv_addr.sin_port = htons(SERV_PORT); serv_addr.sin_addr.s_addr
= htonl(INADDR_ANY); lfd = socket(AF_INET,SOCK_STREAM,0); if(lfd==-1){ sys_err("socket error"); } bind(lfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)); listen(lfd,128); clit_addr_len = sizeof(clit_addr); cfd = accept(lfd,(struct sockaddr *)&clit_addr,&clit_addr_len);
if(cfd==-1){ sys_err("accept error"); } printf("client ip:%s port:%d\n", inet_ntop(AF_INET, &clit_addr.sin_addr.s_addr,client_IP,sizeof(client_IP)), ntohs(clit_addr.sin_port)); while(1){ ret = read(cfd,buf,sizeof(buf)); write(STDOUT_FILENO,buf,ret); for(i=0;i<ret;i++) buf[i]=toupper(buf[i]); write(cfd,buf,ret); } close(lfd); close(cfd); return 0; }
View Code

Client端:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<arpa/inet.h>
#include<sys/socket.h>

#define SERV_PORT 9527

void sys_err(const char *str)
{
    perror(str);
    exit(1);
}

int main(int argc,char *argv[])
{
    int cfd;
    int conter=10;
    char buf[BUFSIZ];
        
    struct sockaddr_in serv_addr;
    serv_addr.sin_family = AF_INET;
    serv_addr.sin_port = htons(SERV_PORT);

    inet_pton(AF_INET,"127.0.0.1",&serv_addr.sin_addr.s_addr);

    cfd = socket(AF_INET,SOCK_STREAM,0);
    if(cfd==-1)
        sys_err("socket error");

    int ret = connect(cfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr));
    if(ret!=0)
        sys_err("connect error");

    while(conter--)
    {
        write(cfd,"hello\n",6);
        ret = read(cfd,buf,sizeof(buf));
        write(STDOUT_FILENO,buf,ret);
        sleep(1);
    }
    close(cfd);

    return 0;
}
View Code

執行的時候,開2個視窗,一個視窗跑server端,./server即可,另一個跑client端,./client即可。注意要先編譯。

Codeforces ID:Anonytt QQ: 847399102 可以新增&關注