聊天室知识点复习(1)

距聊天室项目的完成已经过去了一年,于2018年8月1日复习一遍聊天室涉及到的知识点。

1.以下是众多头文件:

#include <stdio.h>

#include <sys/types.h> //基本系统数据类型(进程)

#include <sys/socket.h> //创建、绑定、监听、接收

#include <netinet/in.h> //socket结构体定义

#include <string.h> //字符串头文件,str簇函数

#include <stdlib.h> //

#include <unistd.h> //linux/unix的系统调用,包含了许多 U N I X系统服务的函数原型,

//例如 read,write和getpid函数。

#include <sys/wait.h> //使用wait()和waitpid()函数

#include <pthread.h> //线程的头文件

#include <arpa/inet.h> //网络地址处理方法

#include <sqlite3.h> //数据库头文件

#include <time.h>

stdlib.h 头文件即standard library标准库头文件。stdlib.h里面定义了五种类 型、一些宏和通用工具函数。 类型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t; 宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等等; 常用的函数如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。

 

2.套接字创建过程: //第一步:创建套接字;

socketfd = socket(AF_INET, SOCK_STREAM, 0);

if(socketfd == -1)

{

perror("socket");

return (-1);

}

printf("socket success ...\n"); //套接字创建成功

 

//第二步:绑定套接字

sock_server.sin_family = AF_INET; //给服务器程序绑定地址族

sock_server.sin_port = htons(MYPORT); //给服务器程序设定端口号

//sock_server.sin_addr.s_addr = inet_addr(MYADDR); //给服程序绑定固定IP地址

sock_server.sin_addr.s_addr = htonl(INADDR_ANY); //绑定任意IP地址

ret = bind(socketfd,(struct sockaddr*)&sock_server,sizeof(struct sockaddr));

if (ret == -1)

{

perror("bind");

return (-1);

}

printf("bind success...\n");

//第四步:监听套接字(客户端不需要这步)

ret = listen(socketfd,10);

//第五步:接收套接字

clientfd = accept(socketfd,(struct sockaddr*)&sock_client,&len);//服务器

ret = connect(socketfd,(struct sockaddr*)&sock_server,sizeof(struct sockaddr));//客户端

//第六步 读和发送数据

recvcnt = read(fd, &Msg, sizeof(Msg));

sendcnt = write(fd, &Msg, sizeof(struct message));

//第七步:关闭套接字

close(socketfd);

 

3.创建线程:ret = pthread_create(&th, NULL, read_msg, &clientfd);

//传递clientfd;要知道从那个客户端来读取数据;

//argc 首先是void类型的指针,经过(int *)argc 强制转换成int *的指针,接下来要从argc所指向

//的地址里取值

void *read_msg(void *argc);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值