用Winsock实现点对点通信

Winsock网络通讯实践:打造类似QQ的聊天应用 本文还有配套的精品资源,点击获取 简介:Winsock是Windows系统的网络通讯API接口,遵循Berkeley Sockets模型,便于开发者构建跨平台网络应用。本文将深入讲解如何利用Winsock在MFC框架下开发点对点的通信系统,涵盖从客户端和服务器的连接建立、数据交换到用户登录、消息传递及安全性处理的全过程。通过本教程,读者将学会设计并实现一个完整的即时通信程序... 阅读详情
w insock控件是VB5.0的新增功能,它解决了以往应用VB编程时网络中应用程序之间无法实现点对点通信的难题。Winsock使用的TCP协议和UDP协议允许建立并保持一个到远程计算机上的连接,且可以在连接结束之前实时地进行数据交换。用户仅通过设置属性并借助事件处理就能够轻而易举地连接到一个远程的计算机上,而且只用两个命令就可以实现数据交换。

  使用TCP协议时,如果需要创建一个客户应用程序,就必须识别服务器的名称或IP地址。应用程序的通信端口随时都将仔细监测对方发出的消息,这是系统进行可靠连接的保证。一旦连接发生,任何一方都可以通过SendData发送和接收数据,并借助GetData把自己的数据分离出来。

  传送数据时,需要先设定客户机的LocalPort属性,服务器则只需要把RemoteHost属性设定为客户机以太网的地址,并设定与客户机LocalPort属性相同的端口地址,借助SendData方法开始发送消息。客户机则在GetData事件中通过DataArrival事件分离出发送的信息。

  一个Winsock控件可以让本地计算机连接到远程的计算机上,同时使用UDP或TCP协议,两个协议都能创建客户机和服务器应用。

  使用Winsock控件时,通信的双方需要选定相同的协议。TCP协议适用于传送大容量、需要安全性保证的数据文件;而UDP协议适用于需要分别与很多下属通信,或者建立的连接比较多且为时变的情况,特别是在数据量很小的时候。设定时可以使用Winsock1.Protocol = sckTCPProtocol方法,首先要找到你的计算机的名称,并把它添入Winsock的LocalHost属性中。

  创建一个应用程序时,首先要确定你建立的是客户方应用还是服务器服务,只有建立的服务器应用开始工作,并进入监听状态时,客户应用程序才开始建立连接,进入正常的通信状态。笔者建立了一个应用程序,它的功能是当客户方的鼠标移动时,服务器应用程序上能够实时显示该鼠标的位置。下面是建立服务器应用的方法:

1.创建一个新的标准EXE文件;
2.加入一个Winsock控件;
3.加入如下代码:
Private Sub Form_Load()
tcpServer.LocalPort = 1001
tcpServer.Localhost = ″servser″
tcpServer.remotePort = 1002
tcpServer.Localhost = ″klint″
tcpServer.Listen
End Sub
′连接检查
Private Sub tcpServer_ConnectionRequest _
(ByVal requestID As Long)
If tcpServer.State <> sckClosed Then _
tcpServer.Close
tcpServer.Accept requestID
End Sub
′发送数据
Private Sub frmserver_monsemove(x,y)
tcpServer.SendData ″x″& str(x)
tcpServer.SendData ″y″& str(y)
End Sub
建立客户应用的方法为:
1.创建一个新的标准EXE文件;
2.加入一个Winsock控件;
3.加入两个TEXT框—— txt_x和 txt_y;
4.加入如下代码:
Private Sub Form_Load()
tcpServer.LocalPort = 1002
tcpServer.Localhost = ″klint″
tcpServer.remotePort = 1001
tcpServer.Localhost = ″servser″
tcpServer.Listen
End Sub
′连接检查
Private Sub tcpklint_ConnectionRequest _
(ByVal requestID As Long)
If tcpklint.State <> sckClosed Then _
tcpklint.Close
tcpklint.Accept requestID
End Sub
Private Sub tcpClient_DataArrival _
(ByVal bytesTotal As Long)
Dim strData As String
tcpklint.GetData strData
if left(strData,1)=″X″then
txt_x.Text = strData
else
txt_y.Text = strData
endif
End Sub

  以上例程实现的是一个非常简单的点对点通信,在此基础上略加改造,可以形成功能复杂的实时计算机网络A-A交互通信系统,用于控制、图形仿真等。

  使用UDP协议建立对等通信和通过TCP建立客户/服务器通信的方法略有不同,它不需要建立客户和服务器,而是建立对等通信。此过程通过以下几步实现:

1.设定Winsock的RemoteHost 属性为一个通信的计算机名称;
2.设定 RemotePort 为一个接口号;
3.调用Winsock的Bind 事件绑定本地的接口号。具体设定方法为:
Private Sub Form_Load()
With Winsock1
.RemoteHost= ″PeerB″
.RemotePort = 1001 ′远程连接号
.Bind 1002
′绑定的本地号
End With
End Sub

  程序的其它部分与TCP方法类似,即通过SendData 和GetData 方法发送或提取数据。UDP和TCP协议在使用中各有特点,如果灵活使用,可以得到很好的效果。令人欣慰的是,VB5.0中Winsock给我们提供了一种简便的数据传送方法,使我们得以轻松地实现网络点对点通信。
利用WinSock 编程接口,实现点对点通信 WinSock 是Windows 操作系统下的Socket 编程接口,通过WinSock 函数库可以实现基于TCP/IP 协议的进程之间通信。Wireshark 是一个网络分析工具,可以利用该工具捕获本机网络出口处的网络流量(网络包)。 实验要求: (1) 基于WinSock 开发一个简单的客户/服务器消息传输程序,客户端能够发送由标准输入得到的消息(字符串输入),服务器能够接收并将其显示在标准输出上。 (2) 利用Wireshark 软件捕获上述通信中的网络包,并分析网络包的以太网头信息、IP 头信息。 立即下载

相关推荐

用WinSock在局域网通信

刚学WinSock时编的,一开始想用WINSOCK做数据传送服务,可惜功力不够。另外,程序只提供192.168.0.1到192.168.0.8之间的连接。不知道为什么,超出十几连接后程序工作就不正常;请各位大侠帮忙。

Winsock控件,实现网络点对点通信

网络的阶梯第二话:使用Winsock控件,实现网络点对点通信  blog出现在优快云,也就blog将不blog也。你会问为什么吧?无论你心里有没有这个问号,但在我心里这是个句号!你又会问为什么吗?好,不管你问不问。我决定,现在作答。但那种长篇大论的前因后果,请恕我无法一一罗列。我只能直接而又间接地说明,blog出现在优快云,也就blog将不blog也。

jfbao的专栏 1430

MFC WinSock点对点通信

MFC CAsyncSocket类的应用,WinSock点对点通信,自绘按钮,初学者适用

WinSock API网络编程——UDP协议(http://www.impcas.ac.cn/usr/lujun/browse.asp?id=winsock_udp)

WinSock API网络编程——UDP协议作者:陆军 Email:ldlujun@163.com 时间:2004-11-14UDP协议(User Datagram Protocol),即用户数据报协议,是定义用来在互连网络环境中提供包交换的计算机通信的协议。它是Internet上广泛采用的通信协议之一。UDP协议直接位于IP协议的顶层,属于传输层协议,它提供向另一用户程序发送信息的最简便的协议机

hafent的专栏 4287

MFC Csocket实现点对点文件传输

一个实现点对点文件传输的例子,服务器端和客户端切换方便。。。。

精彩编程与编程技巧-用Winsock实现点对点通信...

精彩编程与编程技巧-用Winsock实现点对点通信 ...

UDP实现点对点通信

整体的结构思路: Stu和Tea是收发消息的两端; Stu和Tea类都是通过启动两个线程完成通信的,这两个线程分别是发消息线程和收消息线程; Stu类中启动的两个线程分别写在两个类里,Tea也是这样做。 Stu端及其收发消息代码: import java.io.BufferedReader; import java.io.IOException; import java.io.Inpu...

写写代码 2646

编译hive-3.1.3(3.0.0)和编译tez-0.10.2适配hadoop-3.3.4以及hadoop-3.2.2(附安装包)

编译hive-3.1.3(3.0.0)和编译tez-0.10.2适配hadoop-3.3.4以及hadoop-3.2.2(附安装包)

2301_77356579的博客 2599

UDP协议的WinSock API编程示例

Server 端:        WORD wVersion;        WSADATA wsaData;        sockaddr_in server_addr,client_addr;        char buff[1024];        wVersion=MAKEWORD(2,2);  if (WSAStartup(wVersion,&wsaData)!=0)     

IT is Alex.Net 2988

HTML5期末大作业:水果超市网站设计——水果超市(6页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 网购商城设置网页

HTML5期末大作业:水果超市网站设计——水果超市(6页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 网购商城设置网页 常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 明星、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 军事、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他 等网页设计题目, A+水平作业, 可满足大

1714

【库卡机器人】接线步骤

准备X11插头接线,X11插头可以接入机器人外部安全回路接线,其中外部使能信号线也接在此接口上,如果机器人系统没有配置外部使能装置,那个此接口上的外部使能信号端须短接,短接规则为:20-21、23-22、31-30、33-32。持续按住使能键,保持使能上电状态,分别按住示教器右侧每个轴对应的+或-按键,测试机器人每一个轴是否能正常运行,如果一切正常,说明机器人控制正常,机器人可以正常使用。将一根黄绿色等电位线接入其中的一个接地端,并与机器人的接地端相连,使得控制柜与机器人等电位。

qq_45161762的博客 9440

计网实验六:分别基于 TCP 和 UDP 协议,利用 Socket API 实现网上点对点通信在客户端

TCP 一.实验要求 1.传输文件 在客户端,用户选择本地的某个文件,并发送到服务器端。 在服务器端,接收客户端传输的数据流,并按 IP 地址保存在服务器端(文 件名重复的,可以覆盖)。 2.中断处理(还没做) 如果传输过程中服务器端发现客户端断开,服务器端应删除文件,并在屏 幕上提示,如“IP:1.2.3.4 发来 abcd.txt 文件过程中失去连接。”。如果客户端发 现服务器端不工作,客户端应有提示“服务器 1.2.3.5:62345 失去连接”。 二.实验步骤 1.创建server端 如果报错的话自

qq_52641289的博客 2339

从零到一:Ubuntu22.04下VSCode与中文输入法的深度整合指南

本文详细介绍了在Ubuntu22.04系统中如何深度整合VSCode与中文输入法,包括环境准备、安装方案对比、输入法配置及常见问题解决方案。通过fcitx框架优化中文输入体验,提供从基础设置到高级调试的全方位指南,帮助开发者提升在Linux环境下的开发效率。

weixin_29158047的博客 477

用VFP实现依靠Winsock点对点通信

提起“网络聊天”,大家一定不会感到陌生,其实现一般都是依靠Winsock控件来实现的,而且介绍用此控件进行通讯的程序资料也很多,但纵观这些资料,基本上都是介绍在VB、VC、Delphi等编程语言实现的,而用Winsock控件在VFP中进行编程的资料却非常少(几乎找不到),尤其是利用此控件在VFP中进行非文本文件的传输,更是一大难题:VFP中没有二进制类型的变量定义。用VFP的人,有专业的,有非专业了,很多人其实是小白,问出的问题是小白,如果问题不对,我们引导他们问正确的问题。

加菲猫的VFP 174

立创EDA实战:基于NE555的夜间氛围呼吸灯电路设计与模式切换

本文详细介绍了使用立创EDA设计基于NE555芯片的夜间氛围呼吸灯电路。项目核心是利用NE555产生PWM信号,并通过RC充放电电路实现LED亮度的缓慢周期性变化,形成呼吸效果。文章手把手教学,涵盖从电路原理分析、元件参数计算,到在立创EDA中进行原理图绘制、PCB布局布线,直至焊接调试的完整硬件设计流程,是电子爱好者入门实战的经典项目。

weixin_42153793的博客 125

比利时风电光伏负荷一体化数据集解析与应用

本文深度解析了由比利时输电系统运营商Elia集团提供的风电光伏负荷一体化数据集。该数据集整合了负荷、风电与光伏出力数据,并包含多时间尺度的官方预测值,时间跨度长达四年,是研究能源转型、构建电力预测模型及分析电网运行的宝贵资源。文章详细介绍了数据价值、字段含义、实战应用场景(如预测模型基准测试、风光互补性分析)以及数据处理指南,为相关领域的研究与开发提供了高质量数据基础和实践参考。

weixin_29200741的博客 429

Winsock程序设计初步之<一> Winsock编程原理

      本课程主要讲Windows中TCP/IP编程接口Winsock,版本为1.1。高版本的Winsock实际与1.1版相差不多,主要是进行了一些扩充,如可超越TCP/IP协议直接用socket来实现IPX、NETBIOS等其它通信协议。这叙述方便在本文的其余部分中提到的Winsock指的就是Winsock1.1。通过Winsock可实现点对点或广播通信程序,实际这两者之间的区别不大

cnviolet的专栏 1474

基于YOLOv8与UI界面的校园垃圾分类督导系统

YOLO(You Only Look Once)是目前最为广泛使用的目标检测算法之一。它通过一次前向传递即完成目标检测,具有极高的速度与效率。YOLOv8是YOLO系列的最新版本,相比于之前的YOLO版本,YOLOv8在速度、精度、检测能力等方面都有了显著的提升。本项目通过结合YOLOv8模型与UI界面,成功实现了校园垃圾分类督导系统。该系统能够自动识别不同类型的垃圾,并通过UI界面实时展示垃圾分类的结果。

YOLO 337

怎么用C++实现点对点通信

怎么用C++实现点对点通信 1、使用c++TCP /IP 编程 ,socket 或者 RemoteFuncationsCall 远程方法调用 (RPC)。  2、服务器端: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

DDFFR的博客 5420

AutosarMCAL开发——基于EB Wdg驱动

Autosar标准文件中提及的API共有5个,接口名传入参数说明返回参数函数功能ConfigPtr:Wdg配置指针,参数来自于EB生成代码voidWdg初始化ConfigPtr:Wdg配置指针Wdg初始化检查Wdg切换模式,需开启对应配置timeout:设置定时触发器计数(单位ms)void喂狗并重新设定计数值Wdg版本信息本文为博主个人学习总结记录,如有不正,欢迎指正。

qq_45583706的博客 2426

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Windows Mobile上的蓝牙点对点通信

实验室做短距离通信,蓝牙是其中主要技术之一。研究生入学复试的时候,大老板跟我们说,蓝牙的起源和一位弹钢琴的人有关,因为蓝牙用到了跳频,这个和手指在各个琴键之间跳动的现象有一定的联系。各学科之间的碰撞,会出现一些奇妙的火花。 在Windows Mobile平台上,如何来实现蓝牙通信呢?有好多人已经做过这方面的工作,比如在winbile论坛的“使用C...

weixin_34348805的博客 247

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

用Visual Basic实现点对点通讯

 使用TCP协议时,如果需要创建一个客户应用程序,就必须识别服务器的名称或IP地址。应用程序的通信端口随时都将仔细监测对方发出的消息,这是系统进行可靠连接的保证。一旦连接发生,任何一方都可以通过SendData发送和接收数据,并借助GetData把自己的数据分离出来。传送数据时,需要先设定客户机的LocalPort属性,服务器则只需要把RemoteHost属性设定为客户机以太网的地址,并设定与客户

jevylau的专栏 832

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

pb9+winsock.ocx实现双向通信,纯手打全网最细。拒绝搬运vb代码

最近,需要用到局域网发送消息,本来开始想着用timer轮询搞,发现确实效率低,客户端一直抖也不好,于是想到用winsock控件实现,本人由于技术菜还懒,一个想法是百度抄作业,哪知这一步就踏进了深渊。 网上的代码就没一个能跑起来的,基本可以说照搬vb的,而且一些谬误一传十十传百,不知道发文之前自己是否跑通过。因为pb圈子小,这些发帖人在pb群里还经常看到,感觉技术和见识都很牛,在群里只有看他们吹牛的份。可能这些大牛重心早已转移,加上年代久远,姑且这样认为吧。无论怎样,大部分代码还...

m0_61019105的博客 1114

Winsock程序设计初步之<一> Winsock编程原理 (转)

Winsock程序设计初步之 Winsock编程原理 (转)[@more@] 本课程主要讲windows中TCP/IP编程接口Winsock,版本为1.1。高版本的Winsock实际与1.1版相差不多,主要是进行了一些扩充,如...

csd3176的博客 105

<<点对点通信及文件传输软件>>课程设计

这是大一写的课程设计。   点对点通信及文件传输软件 一、软件分析         软件主要功能为通信及文件传输,通信不局限于局域网,文件传输功能适合小文件发送,传输大文件速度较慢。         软件可以方便的用于校园内(比如宿舍间,宿舍内)的文件传送,这样就解决了xp系统和win7系统的共享难题,也避免了频繁使用U盘对电脑USB接口的损伤。         软件为点对点式,即每次

1271

网络通信(1)

网络通信(1) 学习重点: 1.      了解基本的winsock通信流程 2.      学会使用winsock通信 3.      了解局域网通信流程 4.      学习MFC的GUI设置 a)        对文本框和背景颜色的设置 b)        对按钮控件的设置(利用自绘) 学习思路: 1.      创建服务端   这里的服务器也只能连接一个客户端同客户端进

Turtle_Me的博客 721
上一篇: VB用API实现各种对话框(总结)
下一篇: Adding XP Visual Styles to Your Visual Basic Application
beta
博客等级 码龄27年 1粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值