没有合适的资源?快使用搜索试试~ 我知道了~
TCPIP实验报告.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 185 浏览量
2022-01-10
19:09:35
上传
评论
收藏 26KB DOCX 举报
温馨提示
试读
21页
TCPIP实验报告.docx
资源推荐
资源详情
资源评论
本文格式为 Word 版,下载可任意编辑
第 1 页 共 21 页
TCPIP 实验报告
TCP/IP 技术试验报告书 专 业:[通 信 工 程] 同学姓名:[张
世 超] 完成时间:2021 年 7 月 15 日
试验一 网络应用程序基础 试验目的:
通过试验,使同学熟识并把握运用 TCP/IP 技术进行网络编程的基
本学问,加深对课堂教学内容的理解,把握套接字网络通信编程技术,
能够运用 VC++为开发工具编程解决网络通信中的实际问题,进行一些
简洁的网络应用程序设计。试验内容:
1,Winsock 的启动与终止。
2,Winsock 的创建及绑定和关闭。
3,建立通信连接 listen 及 accept 和 connect。
4,数据的传输。
5,简洁的客户机/服务器之间的通信。
要求:通过在 SDK 模式下完成数据通信的过程,把握 Windows
Socket 的常用函数的形式和使用方法,理解数据通信的过程。
试验步骤:
1,打开 VC 环境 1,使用向导为客户端创建工程:选择可执行程
序,选择使用 wsa 环境,单文档环境,其他的选择默认设置 2,在文
件中添加代码 3,编译调试 4,使用向导为服务器端创建工程:选择
可执行程序,选择使用 wsa 环境,单文档环境,其他的选择默认设置
5,在文件中添加代码 6,编译调试 7,分别打开两个系统命令窗口中,
并分别在其中运行客户端和服务器端程序。
8,在客户端侧输入字符,可以看到服务器收到字符串 参考代码:
课本 156 页--160 页 试验结果:
Client: #includeWinsock2.h #includestdio.h //服务器端口
号为 5050 #define DEFAULT_PORT 5050 #define DATA_BUFFER 1024
void main(int argc,char *argv[]) {
WSADATA wsaData;
本文格式为 Word 版,下载可任意编辑
第 2 页 共 21 页
SOCKET sClient;
int iPort=DEFAULT_PORT;
//从服务器端接收的数据长度
int iLen;
//接收数据的缓冲
char buf[DATA_BUFFER];
//服务器端地址
struct sockaddr_in ser;
//推断输入的参数是否正确
if(argc2)
{
//提示在命令行中输入服务器 IP 地址
printf(Usage:client [server IP address]\n);
return;
}
//接收数据的缓冲区初始化
memset(buf,0,sizeof(buf));
if(WSAStartup(MAKEWORD(2,2),wsaData)!=0)
{
printf(Failed to load Winsock.\n);
return;
}
//填写要连接的服务器地址信息
ser.sin_family=AF_INET;
ser.sin_port=htons(iPort);
//inet_addr()函数将命令行的点分 IP 地址转换为用二进制表示
的网络字节挨次的 IP 地址
ser.sin_addr.s_addr=inet_addr(argv[1]);
本文格式为 Word 版,下载可任意编辑
第 3 页 共 21 页
//建立客户端流式套接口
sClient=socket(AF_INET,SOCK_STREAM,0);
if(sClient==INVALID_SOCKET)
{
printf(socket() Failed:%d\n,WSAGetLastError());
return;
}
//恳求与服务器端建立 TCP 连接
if(connect(sClient,(struct
sockaddr*)ser,sizeof(ser))==INVALID_SOCKET)
{
printf(connect() Failed:%d\n,WSAGetLastError());
return;
}
else
{
//从服务器端接收数据
iLen=recv(sClient,buf,sizeof(buf),0);
if(iLen==0)
return;
else if(iLen==SOCKET_ERROR)
{
printf(recv() Failed:%d,WSAGetLastError());
return;
}
printf(recv() data from server:%s\n,buf);
}
closesocket(sClient);
本文格式为 Word 版,下载可任意编辑
第 4 页 共 21 页
WSACleanup(); }
Server: #includeWinsock2.h #includestdio.h
#includestdlib.h #pragma comment(lib,ws2_32.lib) //服务器使用
的端口号为 5050 #define DEFAULT_PORT 5050 void main() {
int iPort=DEFAULT_PORT;
WSADATA wsaData;
SOCKET sListen,
sAccept;
//客户端地址长度
int iLen;
//发送的数据长度
int iSend;
//要发送给客户端的信息
char buf[]=I am a server.;
//服务器和客户端的 IP 地址
struct sockaddr_in ser,
cli;
printf(---------------------------\n);
printf(Server waiting\n);
printf(---------------------------\n);
if(WSAStartup(MAKEWORD(2,2),wsaData)!=0)
{
printf(Failed to load Winsock.\n);
return;
}
//创建服务器端套接口
sListen=socket(AF_INET,SOCK_STREAM,0);
if(sListen==INVALID_SOCKET)
本文格式为 Word 版,下载可任意编辑
第 5 页 共 21 页
{
printf(socket() Failed:%d\n,WSAGetLastError());
return;
}
//以下建立服务器端地址
ser.sin_family=AF_INET;
//htons()函数把一个双字节的主机直接挨次的数据转换为网络直
接挨次的数
ser.sin_port=htons(iPort);
//htonl()函数把一个四字节的主机直接挨次的数据转换为网络直
接挨次的数
//使用系统制定的 IP 地址 INADDR_ANY
ser.sin_addr.s_addr=htonl(INADDR_ANY);
if(bind(sListen,(LPSOCKADDR)ser,sizeof(ser))==SOCKET_ERROR)
{
printf(bind() Failed: %d\n,WSAGetLastError());
return;
}
//进入监听状态
if(listen(sListen,5)==SOCKET_ERROR)
{
printf(listen() Failed:%d\n,WSAGetLastError());
return;
}
//初始化客户端地址长度参数
iLen=sizeof(cli);
//进入一个无限循环,等待客户的连接恳求
剩余20页未读,继续阅读
资源评论
m0_64184830
- 粉丝: 0
- 资源: 7万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- app-release.apk.zip
- python-leetcode面试题解之第421题数组中两个数的最大异或值.zip
- python-leetcode面试题解之第416题分割等和子集.zip
- python-leetcode面试题解之第414题第三大的数.zip
- python-leetcode面试题解之第412题Fizz-Buzz.zip
- python-leetcode面试题解之第409题最长回文串.zip
- python-leetcode面试题解之第408题有效单词缩写.zip
- python-leetcode面试题解之第405题数字转换为十六进制数.zip
- python-leetcode面试题解之第404题左叶子之和.zip
- python-leetcode面试题解之第401题二进制手表.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功