内容发布更新时间 : 2024/12/27 12:50:06星期一 下面是文章的全部内容请认真阅读。
cout<<\无法获取计算机主机名及IP\ } else {
cout<
for(int i=0;p->h_addr_list[i]!=0;i++) {
struct in_addr in;
memcpy(&in,p->h_addr_list[i],sizeof(struct in_addr)); cout<<\第\的IP为:\ } }
WSACleanup(); cin.get(); return 0; } 3、分析
获取计算机的名称和IP地址可以通过调用Windows Socket里面的函数完成,下面上是用到的函数:WSAStartup(),此函数在应用程序中初始化windows sockets DLL,这个函数调用成功后,才可以调用其他的API函数。
六、实验心得:
通过本实验,了解了socket编程的基本思想,懂得了网络编程的基本原理。
5
实验三 基于流式套接字的网络编程设计
一、 实验目的:
1、设计一个网络测试程序
2、采用Send()和WSASend()方式进行请求发送,测试在这两种发送操作下服务器的响应时间有何差别
二、实验类型:设计 三、实验学时:2 四、实验环境
1、硬件环境: Windows操作系统 2、软件环境: Visual C++6.0
五、实验内容及步骤:
1、打开Visual C++6.0,创建一个项目 2、编写源程序文件 (1)
#include
struct sockaddr_in client, server; int s, ns, namelen, pktlen; char buf[400]; char buf3[200];
s=socket(AF_INET, SOCK_STREAM, 0); memset ((char *)&server, sizeof(server), 0); server.sin_family = AF_INET; server.sin_port = htons(PORT);
server.sin_addr.s_addr = INADDR_ANY;
bind(s, (struct sockaddr *)&server, sizeof(server)); listen(s,1);
namelen = sizeof (client);
ns = accept (s, (struct sockaddr *)&client, &namelen); for (;;) {
pktlen = recv (ns, buf, sizeof (buf), 0); if (pktlen == 0) break; printf (\send (ns, buf3,sizeof(buf3), 0); }
close(ns); close(s); }
6
(2)
#include
#include
#define HOST_ADDR \int main () {
struct sockaddr_in server; int s, ns; int pktlen, buflen; char buf1[256], buf2[256];
s=socket(AF_INET, SOCK_STREAM, 0);
server.sin_family = AF_INET; server.sin_port = htons(PORT); server.sin_addr.s_addr = inet_addr (HOST_ADDR); if (connect(s, (struct sockaddr *)&server, sizeof(server)) < 0) { perror(\for (;;) {
printf (\gets (buf1);
buflen = strlen (buf1); if (buflen == 0) break;
send(s, buf1, buflen + 1, 0); recv(s, buf2, sizeof (buf2), 0); printf(\}
close(s); return 0; }
六、实验心得:
通过本实验,了解了基于流式套接字的网络编程设计编程的基本思想,懂得了网络编程的基本原理。
7
实验四 基于数据报套接字的网络编程设计
一、 实验目的:
1、掌握数据报套接字编程的基本方法
2、设计一个网络测试程序,客户端高速发送数据,服务器端接收数据并统计报文个数,测试当前系统和网络环境下服务器的丢包率是多少
二、实验类型:设计 三、实验学时:2 四、实验环境
1、硬件环境: Windows操作系统 2、软件环境: Visual C++6.0
五、实验内容及步骤:
1、打开Visual C++6.0,创建一个项目 2、编写源程序文件
(1)#include
struct sockaddr_in server,client; sockfd=socket(AF_INET,SOCK_DGRAM,0);
memset ((char *)&server, sizeof(server), 0); server.sin_family = AF_INET; server.sin_port = htons(PORT); server.sin_addr.s_addr = INADDR_ANY;
bind(sockfd,(struct sockaddr *)&server,sizeof(struct sockaddr_in)); for (;;) {
int l=sizeof(struct sockaddr_in);
pktlen = recvfrom (sockfd, buf, sizeof (buf), 0,(struct sockaddr_in *)&client,&l); if (pktlen == 0)
8