您的位置:首页 > 新闻 > 热点要闻 > 深圳seo爱好者_个人定制服装app_百度一下你就知道 官网_百度seo排名技术必不可少

深圳seo爱好者_个人定制服装app_百度一下你就知道 官网_百度seo排名技术必不可少

2025/2/25 3:15:04 来源:https://blog.csdn.net/m0_67569906/article/details/145500919  浏览:    关键词:深圳seo爱好者_个人定制服装app_百度一下你就知道 官网_百度seo排名技术必不可少
深圳seo爱好者_个人定制服装app_百度一下你就知道 官网_百度seo排名技术必不可少

服务器

 #include <stdio.h>#include <string.h>#include <unistd.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <pthread.h>#include <semaphore.h>#include <wait.h>#include <signal.h>#include <sys/socket.h>#include <arpa/inet.h>#include <sys/socket.h>#include <sys/ipc.h>#include <sys/sem.h>#include <semaphore.h>#include <sys/msg.h>#include <sys/shm.h>#include <sys/un.h>
typedef struct sockaddr_in addr_in_t;
typedef struct sockaddr addr_t;
typedef struct sockaddr_un addr_un_t;enum Type
{TYPE_REGIST,TYPE_LOGIN
};typedef struct Pack
{int size;enum Type type;char buf[2048];int count;
}pack_t;typedef struct List
{union Data{struct List* tail;char str[64];}data;struct List* next;struct List* prev;
}List;List* create_node()
{List* H=malloc(sizeof(List));H->next=NULL;H->prev=NULL;H->data.tail=H;return H;
}void insert(List* head,List* p)
{head->data.tail->next=p;p->next=head;p->prev=head->data.tail;head->prev=p;p->data.tail=p;
}List* read_pack(pack_t* pack)
{//char* buf = pack->buf;List* head=create_node();int readed_size = 0;while(1){short data_size = *(short*)(pack->buf+readed_size);if(data_size == 0){printf("数据解析完毕\n");break;}readed_size += 2;char temp[data_size + 1];memset(temp,0,data_size+1);memcpy(temp,buf+readed_size,data_size);readed_size += data_size;//printf("temp = %s\n",temp);List* p=calloc(1,sizeof(List));memcpy(p->data.str,pack->buf+readed_size,data_size);readed_size +=data_size;insert(head,p);}
}int main(int argc, const char *argv[])
{if(argc != 2){printf("请输入端口号\n");return 1;}int port = atoi(argv[1]);//创建服务器套接字int server = socket(AF_INET,SOCK_STREAM,0);//准备网络地址结构体: struct sockaddr_inaddr_in_t addr = {0};addr.sin_family =AF_INET;addr.sin_port = htons(port);addr.sin_addr.s_addr = inet_addr("0.0.0.0");//为套接字绑定ip和portif(bind(server,(addr_t *)&addr,sizeof(addr)) == -1){perror("bind");return 1;}//监听listen(server,10);//接受客户端的连接addr_in_t client_addr ={0};int client_addr_len = sizeof(client_addr);int client  =accept(server,(addr_t*)&client_addr,&client_addr_len);if(client !=-1){printf("客户端连接成功\n");}//读取客户端发来的消息while(1){int pack_size=0;read(client,&pack_size,4);pack_t pack={0};read(client,(char*)&pack+4,pack_size-4);pack.size = pack_size;if(pack.type==TYPE_REGIST){printf("客户端注册请求\n");}else if(pack.type == TYPE_LOGIN){printf("客户端登录请求\n");}List* list=read_pack(&pack);printf("账号:%s\n",list->next->data.str);printf("密码:%s\n",list->next->next->data.str);}return 0;
}

客户端

 #include <stdio.h>#include <string.h>#include <unistd.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <pthread.h>#include <semaphore.h>#include <wait.h>#include <signal.h>#include <sys/socket.h>#include <arpa/inet.h>#include <sys/socket.h>#include <sys/ipc.h>#include <sys/sem.h>#include <semaphore.h>#include <sys/msg.h>#include <sys/shm.h>#include <sys/un.h>
typedef struct sockaddr_in addr_in_t;
typedef struct sockaddr addr_t;
typedef struct sockaddr_un addr_un_t;	enum Type
{TYPE_REGIST,TYPE_LOGIN
};typedef struct Pack
{int size;enum Type type;char buf[2048];int count;
}pack_t;void append(pack_t* pack,const char* data)
{char* buf = pack->buf;int len = strlen(data);*(short*)(buf+pack->count) = len;pack->count += 2;memcpy(buf+pack->count,data,len);pack->count += len;pack->size = pack->count + 8;
}int main(int argc, const char *argv[])
{if(argc != 2){printf("请输入端口号\n");return 1;}int port = atoi(argv[1]);int client_fd = socket(AF_INET,SOCK_STREAM,0);addr_in_t addr = {0};addr.sin_family = AF_INET;addr.sin_port = htons(port);addr.sin_addr.s_addr = inet_addr("192.168.126.238");int len = sizeof(addr);if(connect(client_fd,(addr_t*)&addr,len) == -1){perror("connect");return -1;}while(1){pack_t pack = {0};pack.type=TYPE_REGIST;char name[20]="";char pswd[20]="";printf("请输入账号:");scanf("%s",name);while(getchar() != 10);printf("请输入密码:");scanf("%s",pswd);while(getchar() != 10);append(&pack,name);append(&pack,pswd);write(client_fd,&pack,pack.size);}	return 0;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com