文档库 最新最全的文档下载
当前位置:文档库 › Socket接口网络编程实验

Socket接口网络编程实验

Socket接口网络编程实验
Socket接口网络编程实验

Socket接口网络编程实验

一、实验目的

1、熟悉socket编程接口,初步掌握用socket编程接口开发面向连接的网络应用程序的方法,并且能较好的理解、掌握TCP/IP协议,熟悉VC++编程方法及编程环境;

2、初步掌握用socket编程接口开发无连接的网络应用程序的方法;

3、掌握网络应用程序的一般流程,熟悉网络程序的设计思路,步骤。

二、实验类型

设计类实验

三、实验课时

6学时

四、准备知识

1、TCP/IP协议

2、Windows Socket编程知识

3、VC++ 编程语言

五、实验步骤

1、阅读Winsock程序,学习用到的函数和通信过程

(1)面向连接的网络应用程序

阅读Winsock程序,掌握socket网络通信编程的过程,重点掌握使用socket编程接口进行面向连接的网络应用程序开发方法;

(2)无连接的网络应用程序

阅读Winsock程序,掌握socket网络通信编程的过程,重点掌握使用socket编程接口进行无连接的网络应用程序开发方法;

2、编写1个客户机端程序和1个服务器端程序。要求客户机端程序能发送请求给服务器端程序,服务器端程序收到后能发送信息给客户机端程序。

六、实验程序

客户机端程序:

#include

#include

#include

#pragma comment(lib,"ws2_32.lib")

using namespace std;

void main()

{

//加载套接字

WORD wVersionRequested;

WSADATA wsaData;

int err;

wVersionRequested=MAKEWORD(1,1);

err=WSAStartup(wV ersionRequested,&wsaData);

if (err!=0)

{

return;

}

if (LOBYTE(wsaData.wV ersion)!=1 || HIBYTE(wsaData.wV ersion)!=1) {

WSACleanup();

return;

}

//创建套接字

SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);

SOCKADDR_IN addrSrv;

addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");

//把U_LONG的主机字节顺序转换为TCP/IP网络字节顺序

addrSrv.sin_family=AF_INET;

addrSrv.sin_port=htons(6000);

//向服务器发送请求

connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

//接受数据

char recBuf[100];

recv(sockClient,recBuf,100,0);

printf("%s\n",recBuf);

//发送数据

send(sockClient,"this is 李珊珊",strlen("this is 李珊珊")+1,0);

//关闭套接字

closesocket(sockClient);

WSACleanup();

}

服务器端程序:

#include

#include

#include

#pragma comment(lib,"ws2_32.lib")

using namespace std;

void main()

{

//加载套接字

WORD wVersionRequested;

WSADATA wsaData;

int err;

wVersionRequested=MAKEWORD(1,1);

err=WSAStartup(wV ersionRequested,&wsaData);

if (err!=0)

{

return;

}

if (LOBYTE(wsaData.wV ersion)!=1|| HIBYTE(wsaData.wV ersion)!=1) {

WSACleanup();

return;

}

//创建监听的套接字

SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);

SOCKADDR_IN addrSrv;

addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);

//把U_LONG的主机字节顺序转换为TCP/IP网络字节顺序

addrSrv.sin_family=AF_INET;

addrSrv.sin_port=htons(6000);

//绑定套接字

bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

//将套接字设置为监听模式,准备接受用户请求

listen(sockSrv,5);

SOCKADDR_IN addrClient;

int len=sizeof(SOCKADDR);

printf("%s\n","welcome,the serve is started...");

while (1)

{

//等待用户请求到来

SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);

char sendBuf[100];

//发送数据

send(sockConn,sendBuf,100,0);

char revBuf[100];

//接收数据

recv(sockConn,revBuf,100,0);

//打印接受数据

printf("%s\n",revBuf);

//关闭套接字

closesocket(sockConn);

}

}

相关文档