社区
网络通信/分布式开发
帖子详情
通过winsock采集下位机的数据
xuwt
2003-09-13 09:19:43
我想通过tcp/ip采集下位机的数据(下位机是plc),如何通过delphi6.0实现serversocket和clientsocket无法成对用,
再现等待,谢谢各位大侠
...全文
89
7
打赏
收藏
通过winsock采集下位机的数据
我想通过tcp/ip采集下位机的数据(下位机是plc),如何通过delphi6.0实现serversocket和clientsocket无法成对用, 再现等待,谢谢各位大侠
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lningbd
2003-09-23
打赏
举报
回复
PLC一般都用Modbus协议,上位机通过读PLC相应的寄存器就可以获得需要的数据。
wangxiangsjz
2003-09-15
打赏
举报
回复
这怎么给你贴代码啊?关键是下位机用什么开发!
xuwt
2003-09-15
打赏
举报
回复
老兄有详细的代码吗?兄弟比较苯
XXSingle
2003-09-15
打赏
举报
回复
up
wangxiangsjz
2003-09-14
打赏
举报
回复
关键是下位机要有支持TCP/IP协议的开发包。上位机就用ServerSocket好了。
woshiworead1
2003-09-13
打赏
举报
回复
自己制定协议,用数据包发送啊!
solonet
2003-09-13
打赏
举报
回复
很简单啊。
《计算机网络原理》课程实验指导书.doc
《计算机网络原理》实验指导书 目录 《计算机网络原理》实验指导书1 实验一 IP协议分析2 一、实验目的2 二、实验学时2 三、实验类型2 四、实验步骤2 实验二 TCP网络编程5 一、实验目的5 二、实验学时5 三、实验类型5 四、实验步骤5 实验一 IP协议分析 一、实验目的 1. 掌握IP
数据
报的报文格式 2. 掌握子网掩码和路由转发 二、实验学时 4学时 三、实验类型 验证型实验 四、实验步骤 实验分组进行,每组6人,采用网络结构二. 说明:主机A、C、D的默认网关是172.16.1.1;主机E、F的默认网关是172.16.0.1. 主机B启动静态路由服务〔方法:在命令行方式下,输入"staticroute_config"〕. 按照拓扑结构图连接网络,使用拓扑验证检查连接的正确性. 练习一:领略真实的ARP〔同一子网〕 1. 主机A、B、C、D、E、F在命令行下运行"arp -a"命令,察看ARP高速缓存表. [问题] ARP高速缓存表由哪几项组成? 2. 主机A、B、C、D启动协议分析器,打开捕获窗口进行
数据
捕获并设置过滤条件〔提取 ARP、ICMP〕. 3. 主机A、B、C、D在命令行下运行"arp -d"命令,清空ARP高速缓存. 4. 主机A ping 主机D〔172.16.1.4〕. 5. 主机A、B、C、D停止捕获
数据
,并立即在命令行下运行"arp -a"命令察看ARP高速缓存. [问题] 结合协议分析器上
采集
到的ARP报文和ARP高速缓存表中新增加的条目,简述ARP协议的 报文交互过程以与ARP高速缓存表的更新过程. 练习二:编辑并发送IP
数据
报 1. 主机A启动仿真编辑器,编辑一个IP
数据
报,其中: MAC层: 目的MAC地址:主机B的MAC地址〔对应于172.16.1.1接口的MAC〕. 源MAC地址:主机A的MAC地址. 协议类型或
数据
长度:0800. IP层: 总长度:IP层长度. 生存时间:128. 源IP地址:主机A的IP地址〔172.16.1.2〕. 目的IP地址:主机E的IP地址〔172.16.0.2〕. 校验和:在其他所有字段填充完毕后计算并填充. [问题] IP在计算校验和时包括哪些内容? 2. 在主机B〔两块网卡分别打开两个捕获窗口〕、E上启动协议分析器,设置过滤条件〔 提取IP协议〕,开始捕获
数据
. 3. 主机A发送第1步中编辑好的报文. 4. 主机B、E停止捕获
数据
,在捕获到的
数据
中查找主机A所发送的
数据
报. [问题] 第1步中主机A所编辑的报文,经过主机B到达主机E后,报文
数据
是否发生变化?若发 生变化,记录变化的字段,并简述发生变化的原因. 5. 将第2步中主机A所编辑的报文的"生存时间"设置为1.重新计算校验和. 6. 主机B、E重新开始捕获
数据
. 7. 主机A发送第5步中编辑好的报文. 8. 主机B、E停止捕获
数据
,在捕获到的
数据
中查找主机A所发送的
数据
报. [问题] 主机B、E是否能捕获到主机A所发送的报文?简述产生这种现象的原因. 实验二TCP网络编程 一、实验目的 1. 了解基于MFC的TCP网络编程的方式 2. 学习使用MFC编写简单的TCP网络程序 二、实验学时 4学时 三、实验类型 设计型实验 四、实验步骤 该实验以两位同学为一组,一位同学开发服务器程序,一位同学开发客户端程序.使得 客户端与服务器之间能够实现信息交换. 一、Windows Socket和套接口的基本概念 网际协议
是一种用于互联网的网络协议,已广为人知.它可广泛用于大多数计算机操 作系统上,也可用于大多数局域网LAN<比如办公室小型网络>和广域网WAN<比如说互联网 >.从它的设计看来,它是一个无连接的协议,并不能保证
数据
投递万无一失.两个上层协议
依赖IP协议进行
数据
通信. 如果希望在Microsoft Windows下通过TCP和UDP协议建立网络应用程序,则需要使用
Winsock
套接口编程技术. 套接口,就是一个指向传输提供者的句柄.Win32中,套接口不同于文件描述符,所以它 是一个独立的类型——SOCKET.Windows Sockets描述定义了一个Microsoft Windows的网络编程界面,它是从Unix Socket的基础上发展而来的,为Windows TCP/IP提供了一个BSD型的套接字规范,除与4.3BSD Unix Sockets完全兼容外,还包括一个扩充文件,通过一组附加的API实现Windows式<即事件驱 动>的编程风格;而
Winsock
则是在MicrosoftWindows中进行网络应用程序设计的接口.W indows在Internet支配域中的TCP/IP协议定义了
Winsock
网络编程规范,
飞鸽传书(IPMessenger) 源码
软件简介 飞鸽传书(IP Messenger),是由日本人Shirouzu Hiroaki (白水 启章)所发明的免费软件, 是一款局域网内即时通信软件,基于 TCP/IP(UDP)。可运行于多种操作平台(Win/Mac/UNIX/Java),并实现跨平台信息交流。不需要服务器支持, 支持文件/文件夹的传送 (2.00版以上),通讯
数据
采用 RSA/Blofish 加密 (2.00版以上),十分小巧,简单易用,而且你可以完全免费使用它。目前已有的版本包括: Win32, Win16, MacOS, MacOSX, X11, GTK, GNOME,Java 等, 并且公开源代码. 系统要求 Microsoft Windows 95/98/Me/NT4.0/2000/XP/2003 95/98/NT4.0 ... 要求 comctl32.dll(公共控件) 的版本为 5.x 或更高. (如果你安装的 IE 是 5.x 或更高版本, 那么就不必担心这个问题了) 注意: Windows 3.1(和 NT3.5x), 请使用 IP Messenger for Win16. 使用说明 < 安装/卸载 > 执行 setup.exe 你可以将 IPMsg 安装到指定目录, 或者重新注册到启动组. 如果需要删除 IPMsg, 请先从控制面板中卸载, 再手动删除 IPMsg 目录. < 系统托盘区图标 > 左键双击图标, 即可打开发送消息窗口. 右键点击图标, 可进入 [服务设置], [离开] 等. < 发送消息窗口 > - 发送消息时, 若勾选了 [封装], 则接收者要先打开信封才能看到消息, 如果你还勾选了 [上锁], 则接收者在打开信封时还需要输入密码. (密码是由接收者自己在 [服务设置] 中设置的) - 若要发送文件/文件夹, 可直接将文件/文件夹拖入发送消息窗口 或在发送消息窗口上点击右键, 再选择发送文件或发送文件夹 - 传送文件/文件夹时, 当接收者还没有保存(下载)文件/文件夹时, 若发送者关闭或重启了 IPMsg, 则附带的文件信息将被清除, 接收者将不能继续接收(下载)到此文件. - 用户列表前缀符号说明 ":" 表示用户处于离开模式. "|" 表示用户使用的不是 2.0 以上版本的 IPMsg, 将不支持文件/文件夹的传送, 并且不支持通信
数据
加密. "|"(短线) 表示只支持文件/文件夹的传送. - 拖动列表表头标题项可改变其顺序, 并可点击右键选择"保存列表顺序" - 在消息输入窗口中, 可使用 Ctrl+Tab 输入制表符 Tab. - 在发送消息窗口上点击右键, 可以进入设置显示优先级, 选择工作组, 搜索用户(Ctrl+F), 传送文件, 传送文件夹, 保存列表顺序, 字体设置, 窗口大小设置, 固定窗口位置, 列表显示设置. - 在用户名上点击右键, 可设置其显示优先级 优先级按由小到大的顺序排序 - 通过设置显示优先级, 可将经常联系的用户至于列表顶端, 或者隐藏不需要联系的用户 < 接收消息窗口 > - 在接收消息窗口上点击右键, 可以进入字体设置, 窗口大小设置, 固定窗口位置. - 接收消息窗口标题栏中的 "+" 或 "-" 表示通信
数据
使用了加密算法 "+" 表示 RSA/1024 位, blowfish/128 位加密 "-" 表示 RSA/512 位, RC2/40 位加密 - 如果你收到的消息附带了文件, 将会显示出附件按钮. 点击按钮即可保存文件. < 其他 > - 如果需要(通过路由器)连接到广域网, 则需要设置广播地址. 详见广域网设置(广播设置) - 其它功能都很容易理解, 你试一试就明白了 操作技巧 1、隐藏/显示窗口Ctrl+D 2、按住Ctrl键再点[刷新]可保持现有用户,搜索新上线的用户 3、打开发送/接收消息窗口Ctrl+Alt+S/R(需要进行详细设置) 4、打开搜索窗口Ctrl+F 5、接收到多个文件,保存时可勾选[全部] 软件原理 局域网聊天软件飞鸽传书是目前比较流行的局域网即时通讯软件,由于历史悠久,它具有比较多的用户。 因为 FreeEIM 的实现原理和飞鸽传书差不多,希望广大用户了解其原理后,在使用时更加得心应手。 开发多年的飞鸽,在他的基础上增加了些许功能,例如语音对话,这里继续讨论FreeEIM(飞鸽传书),前几天,详细的了解了FreeEIM(飞鸽传书)的网络协议,详细分析并且实现了FreeEIM(飞鸽传书)的消息传递过程,这里就FreeEIM(飞鸽传书)中的文件和文件夹的传输做详细的说明。 在FreeEIM(飞鸽传书)中,如果要进行文件或者文件夹的传输,首先需要做的就是消息的应答,通过UDP发送文件传输报文,另外的FreeEIM(飞鸽传书)客户端收到报文后,使用TCP协议发送应答报文,这样就开始进行文件的传输了。 这里开启两个线程,线程1负责文件的传送,线程2负责文件的接受,下边做一一说明。 首先,我们知道,可以发送多个文件,这些文件需要建立链表保存信息。 typedef struct file_info { struct file_info *next; //双向链表 struct file_info *forward; char *file; //文件名 int type; //文件类型:文件或者文件夹 int size; //文件大小 struct sockaddr_in addr; //目标网络信息 } FILE_INFO; [1]文件传送链表由专门的线程维护,这样,线程1就可以专心进行处理文件传输队列就可以了,线程1始终查询这个链表,如果表头为NULL,就说明没有要传输的文件,表头非空,就开始发送报文,获得正确的应答后,就可以开始文件的传输了,文件传输结束,将相应的链表节点删除。这里借鉴了很多程序中使用非常广泛的“命名池”相关的概念,只不过这里我们使用的是“文件池”,可以这么认为,如果有文件要传输,可以不用考虑是否有文件正在传输,只要把要传输的文件放入 “文件池”就可以了 , 同时,不用考虑“文件池”的大小,线程1是文件池的服务线程,它检测文件池的大小,如果非空,就会逐次传输文件。 这里需要特别注意的就是关于文件夹的传输,这个FreeEIM(飞鸽传书)一个难点,应为对与文件夹的内容是没有显示的,需要我们逐次的判断,在飞鸽传书中是这么处理的,如果是一个文件夹,就发送文件属性为IPMSG_FILE_DIR的信息包,FreeEIM(飞鸽传书)客户端收到这个信息包后,就创建这个文件夹,然后发起发送的FreeEIM(飞鸽传书)客户端,进入文件夹,传送文件夹内的文件,如果该文件夹下,还有文件夹,使用相同的方法,在文件夹内的文件传送结束后,就发送FREEEIM_FILE_RETPARENT信息包,接受的FREEEI_FILE_RETP报文的FreeEIM(飞鸽传书)客户端,执行返回上一级目录,FreeEIM(飞鸽传书)发送端,就需发送目录下的文件。这样循环操作,最终完成文件的传输,这个过程比较难以理解。 有了上边的知识,开发文件传输功能就变得简单多了,文件的接受也可以类推了,同样开启一个线程维护接受文件链表,逐次接受身下的文件,链表为空时。文件传输会遇到文件读写问题,有的文件发送是被打开了,这样会造成访问违规,所以要有相应的处理,才能让程序更加稳健。 程序启动时先读取用户配置文件,一般是"*.ini"格式,然后,使用
Winsock
的广播消息给整个局域网发送一个
数据
包,这时候,如果其他电脑已经运行了飞鸽传书,那么他收到这个包后,会将包的信息读取出来,当然,这个包里有用户的IP,用户名,性别等等。这样,在用户列表里就多了一个用户了。他的用户检查方式就如此简单而已。至于跨网段的实现,只需简单地修改一下广播地址就行了,如果不考虑速度,你可以给整个internet发广播消息。 消息发送,文件传输这些功能,都比较简单,如果你会网络编程,给你对方IP地址,这些功能实现起来再简单不过了。语音、视屏等,只需编写一些语音视频
采集
代码,传书的话,就像传文件一样。这里给段广播消息的实现代码吧: // 发送广播登陆消息 void EM_UserLogin::SendLogin_BC(LPEM_DATA msg) { SOCKET m_socket; m_socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP); if (INVALID_SOCKET == m_socket) { MessageBox(0, "socket failed.", NULL, MB_OK); } SOCKADDR_IN sin;sin.sin_addr.s_addr = htonl(INADDR_BROADCAST); sin.sin_family = AF_INET; sin.sin_port = htons(BROADCAST_SEND_PORT);BOOL bOpt = TRUE; if (SOCKET_ERROR == setsockopt(m_socket, SOL_SOCKET, SO_BROADCAST, (char*)&bOpt, sizeof(bOpt))) { // Error occurred ::MessageBox(0,"BC setsockopt error.",0,0); return; } char *tmpBuf = msg->GetBuffer(); if (SOCKET_ERROR == sendto(m_socket, tmpBuf, msg->GetLength(), 0, (PSOCKADDR)&sin, sizeof(sin))) { // Error occurred ::MessageBox(0,"BC sendto error.",0,0); return; }closesocket(m_socket); 相关信息 - 所有的设置信息都保存在注册表的以下位置: \\HKEY_CURRENT_USER\Software\HSTools\ 用户密码以不可逆加密方式存储. ******************************************************************* * 如果你忘记了密码, 可以在注册表中将此键值删除 * * \\HKEY_CURRENT_USER\Software\HSTools\IPMsgEng\PasswordStr * ******************************************************************* - 本软件使用的默认端口为 2425 若仅使用 UDP 协议的端口, 将不能传送文件/文件夹 (如果安装了防火墙, 则必须打开相应的 TCP 和 UDP 端口) - 本软件为自由软件, 你可以随意传播, 但源码使用请参见许可协议. - 只有在启动或退出程序, 使用离开模式, 刷新在线用户时 IPMsg 才会进行消息广播. - 本软件由 Microsoft Visual C++ 6.0 编译 广域网设置(广播设置) - 主机号全部为 1 的 IP 地址, 即广播地址 例如, 连接到一个 C 类子网(即 24 位网络号, 8 位主机号), IP 地址为 aaa.bbb.ccc.ddd, 其广播地址即为: aaa.bbb.ccc.255 若对方处于另一个私有子网中, 广播可能无效. - 更多问题, 请参阅相关资料或咨询你的网络管理员. - 若两台主机的连接经过了多个路由器, 请直接指定对方IP地址 - 拨号上网用户请勾选 [拨号连接] 当刷新在线用户列表时, 列表不会被清空 补充 - 启动飞鸽传书前, 你可以指定其运行时使用的端口, 且可以使用不同的端口打开多个窗口. 用法如下: ipmsg.exe 2426 (你可在快捷方式上设置) 但是你只能与同时也使用该端口的用户通信. - 所以你尽可选用你喜欢的端口运行本软件. 介于 10000 至 60000 可能更安全些. 你也可以咨询你的网络管理员. - 如果有多个网卡(IP), 你可以将飞鸽传书与指定的网卡(IP)进行绑定. 命令格式如下(你可以在快捷方式上设置): ipmsg.exe [端口] /NIC IP地址 例如: C:\>ipmsg.exe /NIC 192.168.10.100 - 支持命令方式发送消息 命令格式如下: ipmsg.exe [端口] /MSG [/LOG][/SEAL] <主机名或IP地址> <消息> 例如: C:\>ipmsg.exe /MSG /SEAL localhost Hello. 支持 - IPMsg 的技术讨论区是开放的. 如果你想订阅相关邮件, 请联系 ipmsg-subscribe@ring.gr.jp - 欢迎报告 bug, 以及提出建议 - 如果你有任何疑问, 请 E-mail 联系. shirouzu@h.email.ne.jp 中文版可联系阿志: hiwyz@163.net - 发送错误报告, 请勿必记录以下信息: 软件版本, 操作系统, 故障描述, 以及故障重现方法等. 更新历史 ver 1.00 ... 日文版 (1996/08/19) ver 1.31 ... 英文版/日文版 (1997/09/01) ver 2.00 ... 英文版/日文版 (2002/11/19) 支持文件/文件夹传送 支持通信
数据
加密 ver 2.03 ... Bug 修正 (文件传送引起缓冲溢出) 广播设置支持主机地址(FQDN)解析 ver 2.04 ... 增加绑定网卡(IP)功能 ver 2.05 ... Bug 修正 (2.04版当激活发送/接收消息窗口时,无法注销/关闭系统) ver 2.06 ... 很小的调整 ver 2007 ... 全面调整软件的界面可用性、性能稳定性 注意:本版本为 IPMSG 2.06版 编译环境: WINXP & VS2005, 可正确编译。
BS LIS系统仪器
数据
采集
方法
公司的流式细胞仪等。另外,由于网络病毒的影响,对仪器的正常运行也构成了一定的威胁。这两种方式,各有优缺点,一般认为对于复杂逻辑采用后者较好,如果采用异步的方式,则要不断更新状态。另外,和所有的通讯编程一样,因为采用网络接口,其通讯速度非常快,功能也很强大,因此,这种通讯方式往往被用于一些需要进行图片传输的仪器,典型的有:拜尔。由于信息技术的进步,串口通讯也朝高速化方向发展,近年来在个人计算机的快速发展下,使用串口通讯发展出了。从通讯方式上来看,目前,根据仪器的不同,主要有两种方式:单向通讯、双向通讯。
C++抓取网络
数据
用C++实现网络编程---抓取网络
数据
包的实现方法 一般都熟悉sniffer这个工具,它可以捕捉流经本地网卡的所有
数据
包。抓取网络
数据
包进行分析有很多用处,如分析网络是否有网络病毒等异常
数据
,通信协议的分析(
数据
链路层协议、IP、UDP、TCP、甚至各种应用层协议),敏感
数据
的捕捉等。下面我们就来看看在windows下如何实现
数据
包的捕获。 下面先对网络嗅探器的原理做简单介绍。 嗅...
计算机网络课程设计智能家居协议设计
计算机网络课程设计智能家居协议设计一、项目描述二、协议的设计三、项目实现1.server.cpp(服务端)2.client.cpp(客服端)四、实验结果显示总结 一、项目描述 实现一个基于socket的物联网服务器(上位机),接收来自客户端的
数据
。实现一个物联网客户端,模拟设备。
下位机
连接各种设备,
采集
设备
数据
,发送至服务器,服务器根据协议对
数据
作出处理。 需要设置的设备有: 温度传感器:
采集
房间温度信息。 湿度传感器:
采集
房间湿度信息。 灯光:开关灯(多路),调节灯亮度(多路) 空调:可以根据服务器发来
网络通信/分布式开发
1,593
社区成员
32,964
社区内容
发帖
与我相关
我的任务
网络通信/分布式开发
Delphi 网络通信/分布式开发
复制链接
扫一扫
分享
社区描述
Delphi 网络通信/分布式开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章