西北师范大学计算机科学与工程学院 学生实验报告 学号 日期 : "系别 "计算机科学 "专业 " "班级 " "姓 名 " " " "与工程学院 " " " " " " " "课程 " "课程 " "学时数 "2 " "名称 " "类型 " " " " "实验 "实验二、基于TCP的服务器/客户端编程 " "名称 " " "实验目的:1、掌握Linux下的TCP客户端基本原理和基本编程方法 " " " "实验内容: " "1、写Linux下TCP服务器套接字程序,程序运行时服务器等待客户的连接,一旦连接 " "成功,则显示客户的IP地址、端口号,并向客户端发送字符串。 " "2、写Linux下TCP客户端套接字程序,结合TCP的服务器端程序,实现以下功能: " "(1)、客户根据用户提供的IP地址连接到相应的服务器; " "(2)、服务器等待客户的连接,一旦连接成功,则显示客户的IP地址、端口号,并 " "向客户端发送字符串; " "(3)、客户接收服务器发送的信息并显示。 " "实验步骤: " "TCP服务端程序设计 " "使用TCP套接字编程可以实现基于TCP/IP协议的面向连接的通信,它分为服务器端和 " "客户端两部分,其主要实现过程如图所示。 " " " " " " 图1.1 TCP客户/服务器的套接字函数 " " " "socket函数:为了执行网络输入输出,一个进程必须做的第一件事就是调用socket函" "数获得一个文件描述符。 " " #include <sys/socket.h> " " int socket(int family,int type,int protocol); " " 返回:非负描述字---成功 -1---失败 " " 第一个参数指明了协议簇,目前支持5种协议簇,最常用的有AF_INET(IPv4协议)" "和AF_INET6(IPv6协议);第二个参数指明套接口类型,有三种类型可选:SOCK_STREA" "M(字节流套接口)、SOCK_DGRAM(数据报套接口)和SOCK_RAW(原始套接口);如果套接 " "口类型不是原始套接口,那么第三个参数就为0。 " "2、connect函数:当用socket建立了套接口后,可以调用connect为这个套接字指明" "远程端的地址;如果是字节流套接口,connect就使用三次握手建立一个连接;如果 " "是数据报套接口,connect仅指明远程端地址,而不向它发送任何数据。 " "#include <sys/socket.h> " " int connect(int sockfd, const struct sockaddr * addr, socklen_t " "addrlen); " " 返回:0---成功 -1---失败 " " 第一个参数是socket函数返回的套接口描述字;第二和第三个参数分别是一个指" "向套接口地址结构的指针和该结构的大小。 " "这些地址结构的名字均已"sockaddr_"开头,并以对应每个协议族的唯一后缀结束。 " "以IPv4套接口地址结构为例,它以"sockaddr_in"命名,定义在头文件<netinet/in.h" ">;以下是结构体的内容: " "struct in_addr " "{ " " in_addr_t s_addr; " "}; " "struct sockaddr_in { " " uint8_t sin_len; " " sa_family_t sin_family; " " in_port_t sin_port; " " struct in_addr sin_addr; " " char sin_zero[8]; " "}; " "bind函数:为套接口分配一个本地IP和协议端口,对于网际协议,协议地址是32位IP" "v4地址或128位IPv6地址与16位的TCP或UDP端口号的组合;如指定端口为0,调用bind" "时内核将选择一个临时端口,如果指定一个通配IP地址,则要等到建立连接后内核才" "选择一个本地IP地址。 " "#include <sys/socket.h> " " int bind(int sockfd, const struct sockaddr * server, socklen_t addrlen); " " 返回:0---成功 -1---失败 " " " " 第一个参数是socket函数返回的套接口描述字;第二和第第三个参数分别是一个" "指向特定于协议的地址结构的指针和该地址结构的长度。 " "listen函数:listen函数仅被TCP服务器调用,它的作用是将用soc
剩余13页未读,继续阅读
- 粉丝: 168
- 资源: 3万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- STM8L101F3P6单片机+CC1100模块433M遥控器设计硬件(原理图+PCB)工程文件.zip
- 上传下载铁人下载系统 Liuxing 1.0-liuxing1.0.rar
- 南京邮电大学数学实验实力雄厚,凭借其优秀的师资力量、丰富的实践教学资源和卓越的科研成果,成为国内一流的数学实验教学和科研基地
- 【火爆朋友圈的今天吃什么源码 v1.0】随机的为用户带来每一天的用餐选择和推荐.rar
- MPU6050中文版数据手册
- 上传下载手机电影下载-mobiledy.rar
- 响应式旅游网站源码下载 马尔代夫旅游网站.rar
- CMS小涴熊漫画连载系统漫画网站源码 带采集API.rar
- 福袋点点.apk
- 基于STM32的电子秤采用0.96寸OLED显示UI界面源码.zip