没有合适的资源?快使用搜索试试~ 我知道了~
服务器回射程序设计.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 82 浏览量
2022-06-20
22:25:16
上传
评论
收藏 108KB DOC 举报
温馨提示
试读
12页
"网络编程技术实验报告 " "实验名称"实验四 基于数据报套接字的回射程序设计与实验 " "队 别 " "【实验目的】 " "巩固套接字编程 " "熟悉流式套接字编程 " "【实验要求】 " "使用流式套接字编程实现回射程序,具体包括: " "1. 客户端:主动请求建立连接,接收界面输入字符串,发送数据给服务器,接收服 " "务器返回的应答,输出显示。 " "2. 服务器:在指定端口上提供服务,接收客户端的发送的回射请求字符串,将接收 " "到的内容回射给客户端,输出显示。 " "3. 提炼出网络操作的基本功能,构造网络操作类,修改原有程序 " "【实验环境】 " "DEV C++ " "【实验作业】 " "网络操作类设计: " "class CSocketFrame " "{ " "public: " "int start_up(); " "int clean_up(); " "int set_address(char *hname,char *sname,struct sockaddr_in *sap,char " "*protocol); " "int quit(SOCKET s
资源推荐
资源详情
资源评论
服务器回射程序设计
网络编程技术实验报告
实验名称
实验四 基于数据报套接字的回射程序设计与实验
队 别 姓 名
学 号 实验日期
2015.12.9
实验报告要求: 1.实验目的 2.实验要求 3.实验环境 4.实验作业 5.问题及解决
6.思考问题 7.实验体会
【实验目的】
1. 巩固套接字编程
2. 熟悉流式套接字编程
【实验要求】
使用流式套接字编程实现回射程序,具体包括:
1. 客户端:主动请求建立连接,接收界面输入字符串,发送数据给服务器,接收服务器返回的应
答,输出显示。
2. 服务器:在指定端口上提供服务,接收客户端的发送的回射请求字符串,将接收到的内容回射给
客户端,输出显示。
3. 提炼出网络操作的基本功能,构造网络操作类,修改原有程序
【实验环境】
DEV C++
【实验作业】
网络操作类设计:
class CSocketFrame
{
public:
int start_up();
int clean_up();
int set_address(char *hname,char *sname,struct sockaddr_in *sap,char *protocol);
int quit(SOCKET s);
SOCKET tcp_server(ULONG uIP,USHORT uPort);
SOCKET tcp_server(char *hname,char *sname);
SOCKET tcp_client(char *hname,char *sname);
SOCKET tcp_client(ULONG uIP,USHORT uPort);
};
int CSocketFrame::start_up(void)
{
WORD wVersionRequested;
WSADATA wsaData;
int iResult;
wVersionRequested=MAKEWORD(2,2);
iResult=WSAStartup(wVersionRequested,&wsaData);
if(iResult!=0)
{
服务器回射程序设计
printf("WSAStartup 调用错误,错误号:%d\n",WSAGetLastError());
return -1;
}
/*
if(LOBYTE(wsaData.wVersion!=2||HIBYTE(wsaData.wVersion)!=2))
{
printf("无法找到可用的 WSD 版本\n");
WSACleanup();
return -1;
//告诉用户无法找到可用的 WSD
}
else
{
printf("WS2.2 初始化成功!\n");
} */
return 0;
}
int CSocketFrame::clean_up(void)
{
int iResult;
iResult=WSACleanup();
if(iResult==SOCKET_ERROR)
{
//WSACleanup()调用失败
printf("WSACleanup 调用错误,错误号:%d\n",WSAGetLastError());
return -1;
}
else
printf("Winsocket dll 释放成功!\n") ;
return 0;
}
int CSocketFrame::set_address(char *hname,char *sname,struct sockaddr_in *sap,char
*protocol)
{
struct servent *sp;
struct hostent *hp;
char *endptr;
unsigned short port;
unsigned long ulAddr=INADDR_NONE;
//将地址结构 socketsddr_in 初始化为 0,并将地址族设为 AF_INET
memset(sap,0,sizeof(*sap));
服务器回射程序设计
sap->sin_family=AF_INET;
if(hname!=NULL)
{
//如果 hname 不为空,转化地址格式
ulAddr=inet_addr(hname);
if(ulAddr==INADDR_NONE||ulAddr==INADDR_ANY)
{
//调用错误,调用 gethostbyname 获得主机地址
hp=gethostbyname(hname);
if(hp==NULL)
{
printf("未知的主机名,错误号:%d\n",WSAGetLastError());
return -1;
}
sap->sin_addr=*(struct in_addr *)hp->h_addr;
}
else
sap->sin_addr.S_un.S_addr=ulAddr;
}
else
//如果调用者没有指明一个主机名或地址,则设为通配地址
sap->sin_addr.s_addr=htonl(INADDR_ANY);
//尝试转换 sname 为一个整数
port=(unsigned short)strtol(sname,&endptr,0);
if(*endptr=='\0')
{
//如果成功转化为网络字节序
sap->sin_port=htons(port);
}
else
{
//如果失败,则假定是一个服务名称,通过 getservbyname()函数获得端口号
sp=getservbyname(sname,protocol);
if(sp==NULL)
{
printf("未知服务,错误号:%d\n",WSAGetLastError());
return -1;
}
sap->sin_port=sp->s_port;
}
return 0;
}
int CSocketFrame::quit(SOCKET s)
剩余11页未读,继续阅读
资源评论
是空空呀
- 粉丝: 168
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- YOLOV4-TINY权重文件
- 以下是一个使用贪心算法解决多机调度问题的基本步骤0.txt
- 基于大数据的房产估价是近年来随着技术的发展而兴起的一种新型估价方法.txt
- 企业供应链管理系统v3.rar
- 富芮坤FR8016HA蓝牙开发板使用手册+硬件PCB图+封装库+DEMO演示软件源代码.zip
- 基于YOLOv7的芯片表面缺陷检测系统
- 京东物流 数字化供应链综合研究报告2018.rar
- 基于YOLOv7的植物虫害识别&防治系统
- 2000.1-2023.8中国经济政策不确定性指数月度数据.xlsx
- Screenshot_2024-04-21-20-42-15-443_com.tencent.mm.jpg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功