网络编程实验 下载本文

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 #include #include #include #include #define PORT 7000 main () {

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 #include #include #define PORT 7000

#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 #include #include #include #include #include #include #include #include #include #define PORT 7000 int main(void) {int sockfd,pktlen; char buf[300],buf1[300];

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