专业活动总结范文

上传人:亦明 文档编号:125326672 上传时间:2020-03-17 格式:DOC 页数:8 大小:80.02KB
返回 下载 相关 举报
专业活动总结范文_第1页
第1页 / 共8页
专业活动总结范文_第2页
第2页 / 共8页
专业活动总结范文_第3页
第3页 / 共8页
专业活动总结范文_第4页
第4页 / 共8页
专业活动总结范文_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《专业活动总结范文》由会员分享,可在线阅读,更多相关《专业活动总结范文(8页珍藏版)》请在金锄头文库上搜索。

1、专业活动总结范文 网络程序设计专业教学活动总结院系信息技术与工程学院班级12级网本二班小组成员指导教师年月日活动时间第周第周活动地点活动目的 1、掌握TCP/IP协议的工作原理。 2、实现套接字网络编程。 4、理解TCP/IP协议通信方服务器的工作过程。 5、理解TCP/IP协议通信方客户机的工作过程。 6、编程实现网络通信。 1套接字简介套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端面点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程2套接字基本概念要通过Inter进行通信,至少需要一对套接字,其中一个运行在客户端,称之

2、为ClientSocket,另一个运行于服务器端面,称为ServerSocket。 根据连接启动的方式以及本地要连接的目标,套接字之间的连接过程可以分为三个步骤服务器监听、客户端请求、连接确认。 服务器监听是指服务端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。 客户端请求是由客户端的套接字提出连接请求,要连接的目标是服务器端套接字。 为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器套接字的地址和端口号,然后再向服务器端套接字提出连接请求。 连接确认是当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,它就响应客户端套接字的请求,建立一

3、个新的线程,把服务器端套接字的信息发送给客户端,一旦客户端确认了此连接,连接即可建立。 而服务器端继续处于监听状态,继续接收其他客户端的连接请求。 3客户端和服务端具体实现步骤客户端客户端程序包括程序文件client.asm和资源文件client.rc。 资源文件确定了客户端的界面形式。 它先调用函数初始化WinSock库。 当用户输入IP并点击连接按钮后,使用Socket函数创建流套接字,使用WSAAsyncSelect函数将通知消息自定义的ID(即hSocket)绑定到窗口过程中,再使用connect函数去连接服务器。 连接成功时,系统会通知消息给客户端窗口。 连接成功后就可以传输数据了。

4、 A.系统原语recv收到数据后,发送系统通知消息FD_READ,客户端将从缓冲区szReadBuffer中读取数据。 B.客户端需要发送数据时,从对话框中获取数据,写入缓冲区szBuffer,调用系统原语send函数发送出数据,在收到系统FD_WRITE通知消息后,继续发送数据。 C.在缓冲区满或发送失败时,客户端将重发并等待FD_WRITE通知消息的到来。 连接失败则调用closesocket函数断开连接。 用户在数据传输完毕,调用closesocket函数断开连接。 客户端收到FD_CLOSE通知消息时,连接已经断开。 在客户端关闭时,调用WSACleanup函数卸载WinSock库。

5、服务端服务器端程序包括程序文件server.asm和资源文件server.rc。 资源文件确定了服务器端的界面形式。 程序文件的流程图如图图4.4所示。 在WinSock库的加载和卸载,何时去读取套接字,发送数据时的流量控制等方面,服务器端和客户端的工作原理是一样的。 当服务器端准备在端口提供服务时,需要创建流套接字,并设置为非阻塞模式,再使用bind函数将套接字hSocket和端口stSin绑定。 接着调用函数listen让套接字进入监听状态,并指定监听队列允许保持的尚未处理的最大连接数为5。 这样,主程序收到系统FD_ACCEPT通知消息后,调用aept接受客户机的连接请求,调用_AddC

6、lient将其加入到客户端列表中,并统计当前的用户数dwCount。 收到系统FD_READ通知消息后,服务器会调用_RecvData处理接收到的TCP包。 收到系统FD_CLOSE通知消息后,服务器会调用_RemoveClient从客户端列表中删除当前用户的sochet。 4、源程序客户端源程序test_client.cpp:Defines theentry pointfor theconsole application./#includestdafx.h#include/包含Winsock头文件int main(int argc,char*argv)/printf(Hello World!

7、n);int Ret;WSADATA wsaData;/初始化Winsock版本2.2if(Ret=WSAStartup(MAKEWORD(2,2),&wsaData)!=0)printf(WSAStartup failedwith error%dn,Ret);return-1;/在这里开始进行Winsock通信编程/当应用结束时调用WSACleanup sockaddr_in serverAddr;SOCKET s=socket(AF_INET,SOCK_STREAM,0);serverAddr.sin_family=AF_INET;serverAddr.sin_port=htons (20

8、00);serverAddr.sin_addr.s_addr=i_addr(192.168.160.13);if(connect(s,sizeof(serverAddr)=SOCKET_ERROR)printf(connect()failure:%d,WSAGetLastError();return-1;#define BUFSIZE1024char bufBUFSIZE;/缓冲区int bytesRecv;/创建socket并连接服务器.while(true)scanf(%s,buf);if(strlen(buf)=0)send(s,r,1,0);closesocket(s);break;b

9、ytesRecv=send(s,buf,strlen(buf),0);if(bytesRecv=SOCKET_ERROR)printf(send()WSAGetLastError();/*else if(bytesRecv=0|buf0=r)printf(The peerhas closedthe connection.);closesocket(s);break;else/处理缓冲区的数据bufbytesRecv=0;printf(rnreceive data:%s,buf);*/if(WSACleanup()=SOCKET_ERROR)printf(WSACleanup failedwit

10、h error%dn,WSAGetLastError();return0;服务端源程序/test_server.cpp:Defines theentry pointfor theconsole application./#includestdafx.h#include/包含Winsock头文件int main(int argc,char*argv)/printf(Hello World!n);int Ret;WSADATA wsaData;/初始化Winsock版本2.2if(Ret=WSAStartup(MAKEWORD(2,2),&wsaData)!=0)(sockaddr*)&serve

11、rAddr,generated error%d,printf(WSAStartup failedwith error%dn,Ret);return-1;/在这里开始进行Winsock通信编程/当应用结束时调用WSACleanup SOCKETs;sockaddr_in addr;/Inter address/创建流Socket s=socket(AF_INET,SOCK_STREAM,0);if(s!=INVALID_SOCKET)/填充地址信息addr.sin_family=AF_INET;addr.sin_port=htons (2000);addr.sin_addr.s_addr=hto

12、nl(INADDR_ANY);/将Socket和它的地址绑定if(bind(s,(sockaddr*)&addr,SOCKET_ERROR)printf(bind()generated error%d,WSAGetLastError();return-1;/监听连接if(listen(s,3)=SOCKET_ERROR)return-1;while(true)sockaddr_in clientAddr;in_addr clientIn;/设置客户地址结构长度int nClientAddrLen=sizeof(clientAddr);/接受连接SOCKET clientSocket=aept(

13、s,(sockaddr*)&clientAddr,&nClientAddrLen);if(clientSocket=INVALID_SOCKET)printf(aept()WSAGetLastError();break;elsememcpy(&clientIn,&clientAddr.sin_addr.s_addr,4);printf(aept()ok:client IPaddress is%s,port is%d,i_ntoa(clientIn),ntohs(clientAddr.sin_port);#define BUFSIZE1024char bufBUFSIZE;/缓冲区int byt

14、esRecv;/创建socket并连接服务器.while(true)bytesRecv=recv(clientSocket,buf,BUFSIZE,0);if(bytesRecv=SOCKET_ERROR)printf(recv()WSAGetLastError();sizeof(addr)=generated error%d,generated error%d,break;if(WSACleanup()=SOCKET_ERROR)printf(WSACleanup failedwith error%dn,WSAGetLastError();return0;else if(bytesRecv=

15、0|buf0=r)printf(The peerhas closedthe connection.);closesocket(clientSocket);break;else/处理缓冲区的数据bufbytesRecv=0;printf(rnreceive data:%s,buf);5.最后,利用两台电脑分别作为客户端和服务端分别运行程序,编译无错误后。 在Dos环境下,客户端输入telent服务端IP,请求连接,服务端响应后。 客户端就可以访问服务端。 活动收获通过此次课程设计,我学到了很多。 我知道了如何通过编程实现简单的计算机间通信。 使用编程更加了解了计算机网络的功能和强大,并且怎样控制网络设备。 另一方面,我懂得了理论和实践是有很大的差距。 通过小组的共同学习互相帮助,相互合作使我明白了只有理论和实践相结合,才能学到真知识。 同时我深

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号