Linux-Socket-服务器编程实例.pptx
Linux Socket服务器端编程实例 例:建立一个Linux TCP服务器,等待客户端的连接请求,一旦接收到客户端请求,将客户端的IP地址和端口号打印出来,并且向客户端发送"Hello!Socket communication world!"字符串,然后关闭服务器。 0 Linux-Socket-服务器编程实例全文共13页,当前为第1页。 Linux Socket服务器端编程实例 Socket服务器编程中的头文件 #include<stdlib.h> stdlib 头文件即standard library标准库头文件。 该文件包含了的C语言标准库函数的定义,常用的函数如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。 1 Linux-Socket-服务器编程实例全文共13页,当前为第2页。 Linux Socket服务器端编程实例 #include<stdio.h> stdio 就是指 "standard input & output"(标准输入输出),所以,源代码中如用到标准输入输出函数时,就要包含这个头文件! 例如c语言中的 printf("%d",i); scanf("%d",&i);等函数。 2 Linux-Socket-服务器编程实例全文共13页,当前为第3页。 Linux Socket服务器端编程实例 #include<errno.h> 提供错误号errno的定义。查看错误代码errno是调试程序的一个重要方法。当linux C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因。 3 Linux-Socket-服务器编程实例全文共13页,当前为第4页。 Linux Socket服务器端编程实例 #include<string.h> string.h是预先定义好的函数库头文件,里面定义了一些字符串函数,如bzero等,添加这个头文件后才可以使用和字符串相关的操作函数 4 Linux-Socket-服务器编程实例全文共13页,当前为第5页。 Linux Socket服务器端编程实例 #include<netdb.h> Unix和Linux特有的头文件,主要定义了与网络有关的结构、变量类型、宏、函数等。所以在进行Socket网络编程时,必须要包含这个头文件。 5 Linux-Socket-服务器编程实例全文共13页,当前为第6页。 Linux Socket服务器端编程实例 #include<sys/types.h> 在应用程序源文件中包含 <sys/types.h> 以访问 整型、长整型和指针数据模型的定义。所有这些类型在 32位编译环境中保持为 32 位值,并会在64位编译环境中增长为 64 位值。 6 Linux-Socket-服务器编程实例全文共13页,当前为第7页。 Linux Socket服务器端编程实例 #include<netinet/in.h> 数据结构sockaddr_in就定义在这个头文件中。 #include<sys/socket.h> 这个头文件提供socket函数及相关数据结构 7 Linux-Socket-服务器编程实例全文共13页,当前为第8页。 Linux Socket服务器端编程实例 main函数中的参数 在Linux C语言中,main函数通常写作以下形式: int main(int argc,char *argv[]) 其中的两个参数argc和*argv[]是什么含义呢? 8 Linux-Socket-服务器编程实例全文共13页,当前为第9页。 Linux Socket服务器端编程实例 argc:命令行总的参数的个数,即argv中元素的个数。 *argv[ ]:字符串数组,用来存放指向字符串参数的指针数组,每一个元素指向一个参数。 9 Linux-Socket-服务器编程实例全文共13页,当前为第10页。 Linux Socket服务器端编程实例 argv[0]:指向程序的全路径名。 argv[1]:指向在DOS命令行中执行程序名后的第一个字符串。 argv[2]:指向第二个字符串。 … … 10 Linux-Socket-服务器编程实例全文共13页,当前为第11页。 Linux Socket服务器端编程实例 比如编译好的程序为my.exe 在命令行执行 my.exe 1 2 3 那argc就是4,argv[0]是"my.exe",argv[1]是"1",argv[2]是"2",argv[3]是"3"; 11 Linux-Socket-服务器编程实例全文共13页,当前 Linux Socket服务器编程是网络通信的基础,它涉及到操作系统内核、网络协议栈以及C语言编程。在本实例中,我们将创建一个简单的TCP服务器,它监听客户端的连接请求,并在连接建立后,向客户端发送特定的字符串并关闭连接。下面将详细解释相关知识点。 我们来看所需的头文件: 1. `<stdlib.h>`:这是C语言的标准库头文件,包含了如内存分配(`malloc`, `calloc`, `realloc`, `free`)、系统调用(`system`)和数据转换(`atoi`, `atol`)等常用函数。 2. `<stdio.h>`:用于处理标准输入输出,如`printf`和`scanf`函数,是编写程序时经常需要包含的头文件。 3. `<errno.h>`:提供了全局变量`errno`的定义,当C语言的某些系统调用或库函数出错时,`errno`会被设置为特定的错误码,便于程序员调试和排查问题。 4. `<string.h>`:包含了处理字符串的函数,如清零内存(`bzero`)和字符串比较、复制等。 5. `<netdb.h>`:此头文件是Unix和Linux系统特有的,用于网络编程,包含如域名解析、主机信息等网络相关的结构、类型和函数。 6. `<sys/types.h>`:定义了基本的数据类型,如整型、长整型和指针,在不同架构下保持数据类型的兼容性。 7. `<netinet/in.h>`:定义了网络相关的数据结构,如`sockaddr_in`,用于存储IP地址和端口号。 8. `<sys/socket.h>`:包含了Socket编程的核心函数,如`socket`、`bind`、`listen`、`accept`和`connect`等。 接下来,`main`函数的参数`argc`和`argv`是C语言程序的基本输入,它们分别代表命令行参数的个数和参数列表。例如,如果执行`TCPServer 8080`,则`argc`为2,`argv[0]`是程序名("TCPServer"),`argv[1]`是端口号("8080")。 在实现TCP服务器的过程中,主要步骤包括: 1. 创建Socket:使用`socket`函数创建一个套接字描述符。 2. 绑定地址:使用`bind`函数将套接字绑定到指定的IP地址和端口上。 3. 监听连接:使用`listen`函数使套接字进入监听状态,等待客户端的连接请求。 4. 接受连接:使用`accept`函数接收客户端的连接请求,返回一个新的套接字描述符,用于和客户端的通信。 5. 读写数据:使用`send`和`recv`函数在新创建的套接字上进行数据的发送和接收。 6. 关闭连接:完成通信后,使用`close`函数关闭套接字。 在本例中,服务器接收到客户端连接后,将客户端的IP地址和端口号打印出来,然后向客户端发送字符串"Hello!Socket communication world!",最后关闭服务器。这个简单的例子展示了TCP服务器的基本工作流程,实际应用中可能需要处理多个并发连接,或者实现更复杂的业务逻辑。
剩余12页未读,继续阅读
- 粉丝: 102
- 资源: 9353
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助