社区
通信技术
帖子详情
菜鸟送分问题
hitwd2000
2002-04-09 11:54:03
我需要一个例子:
(1)、实现客户/服务器通讯。
(2)、简单,越简单越好。
(3)、API或MFC均可。
(4)、服务器端和客户端的程序分开写。
(5)、使用VC。
另外,我是个通讯方面的菜鸟,希望大家多多帮助,给我一些有通讯例子的网站。谢谢。
...全文
21
7
打赏
收藏
菜鸟送分问题
我需要一个例子: (1)、实现客户/服务器通讯。 (2)、简单,越简单越好。 (3)、API或MFC均可。 (4)、服务器端和客户端的程序分开写。 (5)、使用VC。 另外,我是个通讯方面的菜鸟,希望大家多多帮助,给我一些有通讯例子的网站。谢谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cai3995
2002-04-09
打赏
举报
回复
以前有人贴过帖子说明怎么用VC入门winsock的,好象是(只懂winsock)吧,你搜索一下就有了
如果你对socket机制比较熟悉,只是为了快速开发一个可见的产品的话,我建议c++builder或者是delphi都可以,他们有现成的组件可以使用,对于快速开发很好:)
wwwunix
2002-04-09
打赏
举报
回复
我有一些简单的程序,不过是Unix/Linux下的。
afj
2002-04-09
打赏
举报
回复
建议到网上搜索.关键字:流式套接字。很多这方面的文章。http://www.google.com
afj
2002-04-09
打赏
举报
回复
用Socket接口实现网络异步通信 马爱民 VC ++ 4.1以上版本的开发环境提供了Socket接口,可以方便地进行网络通信。本文是在一个应用程序中利用Socket接口实现异步通信,由于在异步通信状态下,服务端和客户端主控程序在等待信息时可以完成其他工作,因此具有更广阔的应用领域。 1.建立应用程序框架 为了便于说明程序之间的相互关系,假设已用VC ++的AppWizard建立了单文档类型的应用程序框架,项目名为Asock,它包括以下几个文件: AsockApp.h AsockApp.cpp MainFraim.h MainFraim.cpp ChildView.h ChildView.cpp 下面在上述程序框架的基础上编写一个能进行异步通信的应用程序。 2.流式套接字通信原理 流式套接字因其可靠性高而得到广泛的应用。其通信原理为:服务端和客户端都必须建立通信套接字,而且服务端应先进入监听状态,然后客户端套接字发出连接请求,服务端收到请求后,建立另一个套接字进行通信,原来负责监听的套接字仍进行监听,如果有其他客户发来连接请求,则再建立一个套接字。默认状态下最多可同时接收5个客户的连接请求,并建立通信关系。 3.定义MySocket类 本例中为了实现套接字的网络异步通信,通过异步套接字类CAsycnSocket派生出两个新类。代码的生成可以利用ClassWizard来建立程序框架,给两个派生类取名为MySocket和ServeSocket,生成时使用的基类为CAsycnSocket,并可将它们放在同一组文件中(本例是放在MySocket.h和MySocket.cpp中)。接着在ClassWizard中为MySocket类加入OnAccept()和OnReceive()两个函数;为ServeSocket类加入OnReceive()函数。注意,这些函数都是重载函数,不能随便给其命名,加入函数的方法是:在ClassWizard的Object Ids窗口中选中最后一行,然后在Message窗口中选择相应的函数即可。 两个派生类的功能是:MySocket类用于在服务端和客户端建立套接字,分别用于监听和通信;ServeSocket类用于在服务端建立通信套接字,它是在服务端监听到连接请求后才建立的,因此本例中将它作为MySocket类的成员变量。为了使服务端能响应多个客户的请求,可以建立5个ServeSocket类型的套接字,并设立一个记录器,记录已经收到的请求个数,该记录器在MySocket的构造函数中被置为0。 完成异步通信的关键在于上述三个重载函数,它们从网络中传来信息时,可以被自动调用,以完成接收工作。在本例中,OnAccept()函数在收到连接请求后,会向客户发出一个代表其序号的信息;两个OnReceive()函数都进行提示,并在确认后将收到的信息发送回去。上述两个派生类的源代码在网上,网址为www.pccomputing.com.cn。 4.完成服务端或客户端的设置 通过菜单项完成的设置工作可以有多种安排方法,本例为了便于显示,将设置工作安排在CChildView类中。首先用资源编辑器在主菜单中增加Server和Client两个选项,并定义它们的ID,然后用ClassWizard在CChildView类中增加对这两个ID的响应函数,并在其中分别创建套接字后进入监听或开始连接。为了便于观察工作进程,可在其中增加相应的输出语句,另外,在ChildView.h和ChildView.cpp文件前面必须有#include "mysocket.h"语句。 为了简化程序,本程序直接写入服务主机的IP地址,因此,本程序在使用时,服务端是指定的,不能随便改变,但客户端的位置不受限制。 5.程序的使用 本程序可以在同一网络中的不同主机之间进行异步通信。以两台主机为例,首先在指定的主机上启动本程序,并在菜单中选择Server选项,使程序进入监听状态;然后在另一主机上启动本程序并选择Client选项,向服务端发出连接请求;服务端收到连接请求后,自动调用OnAccept()函数,根据客户端的请求顺序向其发出相应信息;客户端接收到服务端发出的信息后,在屏幕上显示一个提示框,按下“确认”按钮后,客户端将此信息发回服务端;服务端收到客户端发回的信息后,处理方式与客户端相同,就是这样实现了这个信息在两台计算机之间的来回传递。值得注意的是,在等待信息期间,这个程序还可以做其他的工作,比如可以选择菜单上的某个选项等,当然也可以加入其他的工作。 运行本程序并选择作为服务端时最多可以同时接收五个客户的请求,因此可以同时运行本程序的六个实例,其中一个设置为服务端,另外五个设置为客户端。由于服务端实际上是用五个套接字分别与客户端通信,因此点对点的通信过程将会互不干扰地进行。 6.源程序 本文给出框架中被改动过的文件代码(即MySocket和ChildView的.h和.cpp文件的源代码)如下,这些程序均在VC ++ 6.0下编译通过,并在本文作者单位的网络环境上运行成功。 mysocket.h文件: //派生套接字类 class ServeSocket : public CAsyncSocket {public: char rx_buf[100]; int ServeNo; public: ServeSocket(); virtual ~ServeSocket(); public: // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(ServeSocket) public: virtual void OnReceive(int nErrorCode); //}}AFX_VIRTUAL } class MySocket : public CAsyncSocket { public: ServeSocket servesocket[5]; int AcceptNo; int ConnectNo; char rx_buf[100]; public: MySocket(); virtual ~MySocket(); public: // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(MySocket) public: virtual void OnAccept(int nErrorCode); virtual void OnReceive(int nErrorCode); //}}AFX_VIRTUAL } mysocket.cpp文件中的有关部分: void ServeSocket::OnReceive(int nErrorCode) { if(Receive(rx_buf,100)) {//重新发出收到的信息 MessageBeep(0); AfxMessageBox(rx_buf); Send(rx_buf,10); } else {//接收错误 AfxMessageBox("receive failed",14); return; } CAsyncSocket::OnReceive(nErrorCode); } void MySocket::OnAccept(int nErrorCode) { if(AcceptNo>4) return; if(!Accept(servesocket[AcceptNo])) {//接收请求失败 AfxMessageBox("accept fail!",12); } else {//接收请求成功 servesocket[AcceptNo].ServeNo=AcceptNo; switch(AcceptNo) {//根据接收次序,向客户端发出信息 case 0: {servesocket[AcceptNo].Send("Message 0",10);break;} case 1: {servesocket[AcceptNo].Send("Message 1",10);break;} case 2: {servesocket[AcceptNo].Send("Message 2",10);break;} case 3: {servesocket[AcceptNo].Send("Message 3",10);break;} case 4: {servesocket[AcceptNo].Send("Message 4",10);break;} default: break; } // AfxMessageBox("accept client!",14); AcceptNo++; } CAsyncSocket::OnAccept(nErrorCode); } void MySocket::OnReceive(int nErrorCode) { if(Receive(rx_buf,100)) {//将收到的信息重新发出 MessageBeep(0); AfxMessageBox(rx_buf); Send(rx_buf,10); } else {//接收错误 AfxMessageBox("receive failed",14); return; } CAsyncSocket::OnReceive(nErrorCode); } 3.childview.h文件中的有关部分 class CChildView : public CWnd { ...public: MySocket Socket_id; //定义套接字类...protected: //{{AFX_MSG(CChildView)} afx_msg void OnPaint(); afx_msg void OnClient(); afx_msg void OnServer(); //}}AFX_MSG DECLARE_MESSAGE_MAP() } 4.childview.cpp文件中的有关部分 BEGIN_MESSAGE_MAP(CChildView,CWnd ) //{{AFX_MSG_MAP(CChildView) ON_WM_PAINT() ON_COMMAND(ID_CLIENT, OnClient) //菜单项ID_CLIENT将程序设置为客户端 ON_COMMAND(ID_SERVER, OnServer) //菜单项ID_CLIENT将程序设置为服务端 //}}AFX_MSG_MAP END_MESSAGE_MAP() void CChildView::OnClient() { CClientDC dc(this); //Creat a socket Socket_id.Create(); dc.TextOut(200,100,"connect",7); if(Socket_id.Connect("192.0.0.0",2000)) //服务端主机IP地址和端口号 dc.TextOut(200,120,"connect fail!",13); else dc.TextOut(200,120,"connect successful!",18); } void CChildView::OnServer() { CClientDC dc(this); //创建已定义的套接字 Socket_id.Create(2000); //为其分配一个端口(2000) //Socket_id.Bind(2000,"192.0.0.0"); //端口号和服务端主机IP地址。不同的主机此地址不同。 //开始监听 dc.TextOut(200,100,"listen",6); Socket_id.Listen(); } (作者地址:大连市中山区小龙街1号224大连海军舰艇学院 116018 收稿日期:1999.01.29)
anyyan
2002-04-09
打赏
举报
回复
哈这么巧,我刚好在学SOCKET,书上有个例程和你的要求一模一样~~~
anyyan2000@sina.com
要的话告诉我,敲一份给你~~~~~
caoguangxin
2002-04-09
打赏
举报
回复
用C++ Builder不是很好吗?保证半个钟头可以写出你要求的程序来。
hitwd2000
2002-04-09
打赏
举报
回复
有没有关于通讯编程例子的网站(简单例子就可以了)。我不需要特别复杂、可靠的通讯。
Cocos开发VR
菜鸟
宝典
由知名Cocos技术讲师火云红孩儿主讲的Cocos 开发 VR的系统课程,包括硬件选择,Cocos开发VR的框架搭建,陀螺仪处理,手柄处理,打包发布等各项技术。
惠州
菜鸟
机器人_
菜鸟
末端配送机器人小G亮相,惊呆众人!
9月1日,
菜鸟
网络发布了一段视频,展示了旗下E.T.物流实验室研发的首款
菜鸟
末端配送机器人小G。早在今年七月,英国《每日邮报》就报道称,未来几个月,英国伦敦街道尝试用机器人来送外卖。如今,中国也将开启机器人送快递模式。据官方介绍,
菜鸟
末端配送机器人小G由
菜鸟
E.T.物流实验室研发,是一款可以在陆地上行走的机器人,身高1米左右,每次配送大概能装10-20个包裹。用户只要通过手机向小G发出服务需求,他...
惠州
菜鸟
机器人_
菜鸟
首款智能配送机器人小G曝光!以后快递都这么送了
你能想象,打开门看见一个萌萌哒机器人为你送快递时的兴奋吗?今日,
菜鸟
网络发布了一段视频,展示了旗下E.T.物流实验室研发的首款末端配送机器人小G。简单来说,这是一款专门用于“快递最后一公里”而生的配送机器人,它拥有像强大的独立思考能力和计算能力,不仅自己会上电梯、感知电梯的拥挤程度,甚至还能识别路上的行人、车辆,智能规划路线。据官方介绍,小G由
菜鸟
E.T.物流实验室研发,是一款可以在陆地上行走的机...
菜鸟
驿站是什么快递_
菜鸟
驿站支持哪些快递(
菜鸟
驿站默认发什么快递)
菜鸟
驿站目前三通一达都持有股份,其中中通股份最多。除以上快递公司以外目前只要是快递公司愿意存放都可以对接到驿站。目前存在的情况就是,部分快递公司快递量不大的,如京东,如风达等等几个或者十几个业务员都会直接选择打电话通知解决,而非存放驿站。其中由于中通快递的量占比最大,所以运营
菜鸟
驿站,对接中通进去基本上
问题
解决一大半。在中通公司多次会议当中,都有做
菜鸟
的培训讲解。
菜鸟
驿站,快递超市,中通形象店建设...
html
菜鸟
驿站,
菜鸟
驿站
项目背景
菜鸟
驿站是由阿里巴巴旗下
菜鸟
网络牵头,建立的面向社区、校园的第三方末端物流服务平台。在服务物流行业的同时,持续提升末端运作效率,并为用户提供包裹暂存、代寄等服务,致力于为消费者提供多元化的最后一公里服务。
菜鸟
驿站主要有三个核心业务:1、 网购包裹暂存、线下自提、安全保管2、 便捷代寄、线上下单、在线支付3、 便民服务、生活服务、特色服务为了打造
菜鸟
的IOT战略下的新物流操作系统,实现数智化...
通信技术
4,356
社区成员
28,926
社区内容
发帖
与我相关
我的任务
通信技术
通信技术相关讨论
复制链接
扫一扫
分享
社区描述
通信技术相关讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章