c语言socket实验报告,Socket编程利用TCP协议的实验报告

《Socket编程利用TCP协议的实验报告》由会员分享,可在线阅读,更多相关《Socket编程利用TCP协议的实验报告(8页珍藏版)》请在人人文库网上搜索。

1、Socket 编程报告( TCP/IP 协议)实验目的通过 C+ 来实现 TCP/IP 协议下的 Socket 编程,掌握 TCP 协议的算法实现实验原理Connect 连接到服务器,send 发送消息,等待处理,通信完客户端 建立 Socket ,通过端口号和地址确定目标服务器,使用 成后调用 CloseSocket 关闭 Socket服务端 建立 Socket ,声明自身的端口号和地址并绑定到 Socket ,使用 Listen 打开监听,然后不断用 Accept 去查看是否有连 接,如果有,捕获 Socket ,并通过 Recv 获取消息的内容,通信完成后调用 CloseSocket 关。

2、闭这个对应 Accept 到的 Socket , 如果不再需要等待任何客户端连接,那么用 CloseSocket 关闭掉自身的 Socket三 实验代码( C+ 实现)服务器端代码如下:#pragma once#include #include #pragma comment (lib,ws2_32.lib)class CServerNetpublic:/ 初始化服务器 ,返回 0 表示成功int Init(const char* address,int port);/ 更新数据void Run();private:SOCKET m_sock;int CServerNet:Init( cons。

3、t char* address,int port )int rlt = 0;/ 用于记录错误信息,并输出int iErrorMsg;/ 初始化 WinSockWSAData wsaData;iErrorMsg = WSAStartup(MAKEWORD(1,1),&wsaData);if (iErrorMsg != NO_ERROR) / 初始化 WinSock 失败printf(wsastartup failed with error : %dn,iErrorMsg); rlt = 1;return rlt;/ 创建服务端 Socketm_sock = socket(AF_INET,SOCK。

4、_STREAM,IPPROTO_TCP);if (m_sock = INVALID_SOCKET)/ 创建 Socket 异常printf(socket failed with error : %dn,WSAGetLastError(); rlt = 2;return rlt;/ 声明信息sockaddr_in serverAddr; serverAddr.sin_family = AF_INET; serverAddr.sin_port = port;serverAddr.sin_addr.s_addr = inet_addr(address);/ 绑定iErrorMsg = bind(m_。

5、sock,(sockaddr*)&serverAddr,sizeof(serverAddr); if (iErrorMsg #include#pragma comment(lib, Ws2_32.lib)class CClientNetpublic:/ 连接上指定服务器int Connect(int port,const char* address);/ 发送信息int SendMsg(const char* msg,int len);/ 关闭void Close();private:SOCKET m_sock;int CClientNet:Connect( int port,const ch。

6、ar* address )int rlt = 0;/ 用于记录错误信息并输出int iErrMsg;/ 启动 WinSockWSAData wsaData;iErrMsg = WSAStartup(MAKEWORD(1,1),&wsaData);if (iErrMsg != NO_ERROR)/ 有错误printf(failed with wsaStartup error : %dn,iErrMsg); rlt = 1;return rlt;/ 创建 Socketm_sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if (m_sock = INVA。

7、LID_SOCKET)/ 创建 Socket 失败printf(socket failed with error : %dn,WSAGetLastError();rlt = 2;return rlt;/ 目标服务器数据 sockaddr_in sockaddrServer;sockaddrServer.sin_family = AF_INET; sockaddrServer.sin_port = port;sockaddrServer.sin_addr.s_addr = inet_addr(address);/ 连接 ,sock 与目标服务器连接iErrMsg = connect(m_sock。

8、,(sockaddr*)&sockaddrServer,sizeof(sockaddrServer); if (iErrMsg 0)printf(connect failed with error : %dn,iErrMsg);rlt = 3;return rlt;return rlt;int CClientNet:SendMsg(const char* msg,int len)int rlt = 0;int iErrMsg = 0;/ 发送消息,指定 sock 发送消息 iErrMsg = send(m_sock,msg,len,0);if (iErrMsg 0)/ 发送失败 printf(。

9、send msg failed with error : %dn,iErrMsg);rlt = 1; return rlt;return rlt;void CClientNet:Close() closesocket(m_sock);int main()CClientNet client;/ 连接到 127.0.0.1 (即本地) ,端口号为 8888 的服务端 printf(Connectn);client.Connect(8888,127.0.0.1);/ 发送消息 printf(send msgn);client.SendMsg(hello0,sizeof(hello0);/ 关闭 socket printf(closen);client.Close();system(pause);四实验结果 F笛畫二诂乂匕州.査飞亡厲弐7严刊亍Socket 在通信虽然程序是五心得体会通过本次实验, 我了解了 TCP/IP 协议与 UDP 协议的异同之处, 理解了中的地位和作用。 在调试程序过程中的查错纠错也让我对程序有了深刻的理解,借鉴他人的,但我通过调试之后的进一步解析阅读也掌握了其中的原理,收获颇丰。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.2 功能要求 (1)登录功能。 (2)客户可以通过服务器转发,实现一对一和多对多聊天。 (3)实现呼叫功能。 (4)客户端程序应该可以实时显示目前其它用户的状态。 (5)应该具有易用、美观的图形界面。 一、 实验目的: 1. 了解socket类的网络编程技术; 2. 熟悉socket聊天系统的结构和工作原理; 3. 掌握TCP传递消息的机制; 4. 应用delphi对该聊天系统进行程序的编写。 二、 实验描述: 通过delphi编程实现局域网内的一个聊天系统,支持客户与服务器、客户与客户之间的消息传递,服务器允许多个客户端的聊天的功能,聊天记录的保存和查看的功能等。 三、 实验硬件、软件平台: 1. 硬件平台:多台PC机的一个局域网、Windows XP/2000、AMD Athlon64 X2 4000+ 、内存256MB以上、硬盘80G以上。 2. 软件平台:delphi7 1.3 运行环境 本系统基于WIN NT 和ACCESS XP设计,适用于WIN2000/WIN XP等系统,并需要安装office2000/office xp. 1.4 功能实现 1.登录验证功能。 2. 客户通过服务器转发,实现聊天功能。 3. 实时显示目前其它用户的状态。 4. 保存并能察看聊天纪录。 5.申请新的用户号码。 6. 易用、美观的图形界面,实现系统托盘。 二.技术路线 2.1 总体方案 为实现网络聊天的功能,采用Windows Socket编程,服务器与客户端采用了TCP/IP连接方式,在设计聊天方案时,实行将所有信息发往服务器端,再由服务器进行分别处理的思路,服务器端是所有信息的中心。 由于服务器端要保存用户信息,我们利用数据库来实现这一功能,因此首先需要建立用户信息数据库。 在客户端保存聊天纪录和用户号码这一功能的实现中,采用了文件系统设计。 在信息到来及好友上线时,通过闪动托盘图标和播放不同的音乐进行提示。 建立消息链表来保存用户接收的各种消息。 服务器及客户端的功能可划分为以下模块: 客户端: 1) 登陆功能:建立与服务器的连接并登陆,能显示登陆错误信息。 2) 界面显示:将在线好友显示在好友列表中,并实现系统托盘,加入工具栏便于操作。 3) 聊天功能:与好友聊天。 4) 聊天纪录:能保存聊天纪录,并能察看聊天纪录。 5) 信息提示:闪动托盘图标提示到来信息,并播放不同音乐来提示。 6) 其他: 用户登陆成功,将保存其号码,以便下次登陆时,不必再输入而可以直接选择,显示登陆时间。
一、 系统概要 1、 开发平台: Windows XP, Visual C++ 6.0 2、 系统简单描述: 这是一个用VC做的简单的聊天系统。在此系统中,采用TCP协议,程序分为服务器端各客户端。系统能实现简单的聊天室功能包括一对多,而且同时也支持一对一,即私聊功能。在系统运行中,用户可以随时更改自己的用户名。功能虽然单一但也能够满足聊天的基本功能。 二、 通信规范的制作 程序中定义了一个结构体MYMESSAGE来作为信息传送的载体 struct MESSAGE { char flag; //作为标志来区别所发送的信息; char data[100];//发送的内容; char addr[25]; //客户IP地址和端口号 }; 三、 主要模块的设计分析 服务器端: 系统流程如下: 设计思路: 基于TCP/IP的通信基本上都是利用SOCKET套接字进行数据通讯,程序一般分为服务器端和用户端两部分。设计思路(VC6.0下): 第一部分 服务器端 一、创建服务器套接字(create)。 二、服务器套接字进行信息绑定(bind),并开始监听连接(listen)。 三、接受来自用户端的连接请求(accept)。 四、开始数据传输(send/receive)。 五、关闭套接字(closesocket)。 第二部分 客户端 一、创建客户套接字(create)。 二、与远程服务器进行连接(connect),如被接受则创建接收进程。 三、开始数据传输(send/receive)。 四、关闭套接字(closesocket)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值