0720,socket通信,窗前明月光,窗前明月光

LINUX04

可恶,为什么看不懂SCP命令要的参数是什么喵
时光机0720:scp username@网址:/dir/filename 本地目录  (caution:windows的黑窗口使用)

LINUX06

0708,LINUX目录相关操作 + LINUX全导图-CSDN博客好好好喵,抄过了还是不记得喵

t_getcwd.c   逮捕忘记free的自己喵

#include <func.h>

int main(int aegc,char* argv[])
{
    char* cwd=getcwd(NULL,0);
    if(!cwd){error(1,errno,"getcwd");}

    puts(cwd);
    free(cwd);//buffer,sizef(buffer),NULL-->自动malloc,bu free
    return 0;
}

t_test01.c

#include <func.h>
/*struct dirent{
    ino_t d_ino;
    off_t d_off;
    unsigned shott d_reclen;
    unsigned char d_type;
    char d_name[256];
};*/

int main(int argc,char* argv[])
{
    DIR* pdir=opendir(".");
    if(!pdir){error(1,errno,"opendir ..");}

    long loc=telldir(pdir);
    //idiom
    struct dirent* pdirent;
    errno=0;//readdir()会返回dirent* ,读到末尾和错误都return NULL,区别errno
    while(1){
        //事先记录目录流位置
        long tmploc=telldir(pdir);
        pdirent=readdir(pdir);
        if(pdirent==NULL){break;}//eof  error  return
                                 
        printf("%s",pdirent->d_name);
        if(strcmp(pdirent->d_name,"t_getcwd.c")==0){
            loc=tmploc;
        }
    } 
    printf("\n");
    //error or end
    /* if(errno){(1,errno,"readdir"); } */
    if(errno!=0){
        perror("readdir");
        exit(1);
    }

    printf("--------\n");

    seekdir(pdir,loc);
    pdirent=readdir(pdir);
    puts(pdirent->d_name);

    printf("--------\n");
    rewinddir(pdir);
    pdirent=readdir(pdir);
    puts(pdirent->d_name);

    closedir(pdir);

    return 0;
}

begin
.
t_dir_test.c
..
t_dir_test
t_gercwd
t_getcwd.c

--------
t_getcwd.c
--------
.
.. . 是隐藏目录喵

LINUX17

001.c 001sever.c    可恶为什么连不上~好的连上了

#include <func.h>

int main()
{
    //创建server的监听套接字
    int listenfd=socket(AF_INET,SOCK_STREAM,0);
    if(listenfd==-1){error(1,-1,"listen");}

    struct sockaddr_in serveraddr;
    memset(&serveraddr,0,sizeof(serveraddr));
    serveraddr.sin_family=AF_INET;
    serveraddr.sin_port=htons(8080);
    serveraddr.sin_addr.s_addr=inet_addr("192.168.30.129");

    //human can see
    printf("%s:%d\n",inet_ntoa(serveraddr.sin_addr),
           ntohs(serveraddr.sin_port));
    //bind  绑定一个套接字和一个网络地址
    //只有服务器需要调用猫,暴露自己的网络地址
    //lient会被操作系统自动分配一个
    
    int ret=bind(listenfd,(const struct sockaddr*)&serveraddr,
                 sizeof(serveraddr));
    if(ret==-1){error(1,errno,"bind");}

    //jianting client
    ret=listen(listenfd,1);

    while(1);
    return 0;
}
#include <func.h>

int main()
{
    //client
    int clientfd=socket(AF_INET,SOCK_STREAM,0);
    if(clientfd<0){error(1,0,"socket");}//miao1
                 //
    struct sockaddr_in serveraddr;
    memset(&serveraddr,0,sizeof(serveraddr));
    serveraddr.sin_family=AF_INET;
    serveraddr.sin_port=htons(8080);
    serveraddr.sin_addr.s_addr=inet_addr("192.168.30.129");
    //sin_addr  你也是个结构体miao
    int  ret =connect(clientfd,(struct sockaddr*)&serveraddr,
                     sizeof(serveraddr));
    if(ret==-1){error(1,errno,"connect");}
    printf("connect sucess\n");

    //进行数据的接收和发送

    while(1);
    
    return 0;
}

 127.0.0.1可以喵

192.168.235.128也可以喵  这个是我Linux的局域网地址

192.168.30.129环回地址喵,一般本地测试使用,自己发自己收喵

这狗比玩意根本记不住

socket()   创建一个套接字
bind()       将一个套接字和网络地址进行绑定,只有服务器需要使用,将网络地址暴露给客户端,客户端由操作系统随机分配
listen()     监听一个套接字
connect()  客户端发送建立连接的请求
reve()     从已连接的套接字中接受数据,通常和send()连用,用于客户端和服务器之间的数据交换

 

作业:

01:在一对一聊天的基础上,使用select实现一对多的回显服务。(回显服务即接收到客户端发送的数据后,再回复给客户端)

02:使用select编写聊天室程序:客户端和服务端使用tcp通信;服务端可以处理新客户端的连接和转发消息;客户端可以连入服务端并发送消息。

  • 14
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值