ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:140.66KB ,
资源ID:8990012      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8990012.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(流套接字编程.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

流套接字编程.docx

1、流套接字编程实验四 流套接字编程一、 实验目的:1、 熟悉并掌握socket的基本函数的使用。2、 应用流套接字实现网络程序。二、 实验平台: Window 2000 VC6.0三、实验内容应用流套接字编写客户端与服务端进行聊天的程序。(1)VC的使用(2)流套接字的通信模型(3)windowAPI的线程应用四、实验过程1、调试聊天服务端的程序(由于时间有限下面只讲述客户端程序!)2、编写并调试客户端的程序客户端程序实现步骤:(1) 新建只包含基本对话框的工程。(2) 在对话框中添加并设置以下控件: 控件列表(listctrl),两个文本框(edit1,edit2),发送及连接按钮(butto

2、n1,button2, Button3).(3)右击CSocketDlg类,给控件增加变量及方法IDC_LIST1对应变量为:m_ListText类型为control IDC_Send(发送) m_Send 类型 control加功能函数IDC_DestIP(IP地址) m_DestIP 类型 controlIDC_SendEdit(数据发送) 加变量 m_SendEditIDC_Connect(连接) 加变量 m_Connect,加功能函数IDC_Apart(断开) 加变量 m_Apart.(4)在CSocketDlg.h中导入winsock.h及#pragma comment (lib,”

3、wsock32.lib”),同时增加以下成员变量:(5)在CSocket.h中 导入CSocketDlg.h,并声明线程函数UINT thread(LPVOID v)(6)在CSocket.ccp中实现UINT thread(LPVOID v)5、一些重要函数及变量的映射设定六、实验重要函数详细代码:1)线程UINT thread(LPVOID v) UINT thread(LPVOID v) char buff100; char array25100=127.0.0.1; CSize size; size.cx=0; size.cy=30; int s=1,addcount=0; CCSoc

4、ketDlg *dlg=(CCSocketDlg*) AfxGetApp()-GetMainWnd(); dlg-m_Connect.EnableWindow(FALSE); dlg-m_Apart.EnableWindow(TRUE); /连接到服务器 while(connect(dlg-clisock,(sockaddr*)&(dlg-cli),sizeof(dlg-cli)&dlg-ee!=0) dlg-m_SendEdit.SetWindowText(等待.); /空循环 for(int i=0;i=65000;i+) for(int j=0;jcli.sin_addr.s_addr=

5、inet_addr(arrayaddcount+); if(dlg-ee=1&dlg-Exit=0)/申请连接且断开的时候 dlg-m_ListText.InsertItem(dlg-count+,连接成功!); dlg-m_Send.EnableWindow(TRUE); dlg-SetForegroundWindow(); /循环获得数据 while(dlg-Exit=0&s!=SOCKET_ERROR&dlg-ee!=0) /调用recv函数接收数据 s=recv(dlg-clisock,buff,100,0); dlg-SetForegroundWindow(); if(s!=SOCK

6、ET_ERROR&dlg-ee!=0) dlg-m_ListText.InsertItem(dlg-count+,buff); dlg-m_ListText.Scroll(size); /发送断开命令 send(dlg-clisock,Disconnected,100,0); dlg-m_Send.EnableWindow(FALSE); dlg-m_Connect.EnableWindow(TRUE); dlg-m_Apart.EnableWindow(FALSE); closesocket(dlg-clisock); AfxEndThread(0); return 0;2)发送函数OnSe

7、nd()的实现:void CCSocketDlg:OnSend() char buff100; CSize size; size.cx=0; size.cy=30; m_SendEdit.GetWindowText(buff,99);/从编辑框中获得发送信息 m_SendEdit.SetWindowText();/刷新编辑框 m_ListText.InsertItem(count+,buff);/拆入到列表控件 m_ListText.Scroll(size);/滚动条向上滚动30个单位send(clisock,buff,100,0);/发送100个字符到clisock套接口 3)连接函数 vo

8、id CCSocketDlg:OnConnect() char ipaddress35=0,0;/定义并设置IP Exit=0;/把信息填入套接字 m_DestIP.GetWindowText(ipaddress,30); cli.sin_addr.s_addr=inet_addr(ipaddress); cli.sin_family=AF_INET; cli.sin_port=htons(8001);/设置信息出去端口号为8001,该端口必须与服务器端口号匹配 clisock=socket(AF_INET,SOCK_STREAM,0);/创建套接口 ee=1;/设置为1表示连接申请 AfxB

9、eginThread(thread,0);/调用线程实现通信 4)暂时断开void CCSocketDlg:OnApart() Exit=1;/设置断开变量为真 m_Send.EnableWindow(FALSE);/使发送无效 m_Apart.EnableWindow(FALSE);/使断开无效 m_Connect.EnableWindow(TRUE);/连接有效七、运行结果展示: 1)运行服务器端:2)运行客户端点击连接等待连接: 3)服务器端接受: 4)连接成功:5)服务器端发送消息两个客户端接收结果:6)客户端发送消息:7)客户端暂时断开:8)再次连接:9)一个客户端退出:八、实验注意(实验总结体会): 1、在界面的listctrl设置时因未明原因要设置成list,而老师讲课时说的是report !不然即使联通了也不会显示信息内容。2、此次实验的主要目地在于了解客户端与服务器端的通信主要原理,因而该试验还有不少之处有待完善。譬如:断开之时客户端无法工作了可是服务器端却认为还是连着的,又如当客户端发送数据给服务器后服务器又会返发回来(如上图),这个与通信的协议有关。3、此次实验耗费我很多时间,不知道可否继续下去,好好研究一下作为该科课程设计?

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1