WinSock控件及WinSockAPI

基于TCP和UDP的socket通信程序(C语言) C语言编写的两个聊天程序,一个是基于TCP一个是基于UDP,算是给初学socket编程的朋友一个启迪吧,里面代码注释比较详细,代码尽量去掉不相干的东西,突出TCP和UDP通信的过程。 立即下载
WinSock简介
      Socket(套接字)最初是由加利福尼亚大学Berkeley(伯克利)分校为UNIX操作系统开发的网络通信接口,随着UNIX的广泛使用,Socket成为当前最流行的网络通信应用程序接口之一。20世纪90年代初,由SunMicrosystems,JSB,FTP software,Microdyne和Microsoft等几家公司共同定制了一套标准,即WindowsSocket规范,简称WinSock。

VB编写网络程序主要有两种方式:1.winsock控件 2.winsockAPI


二,WinSock控件的使用
1.WinSock控件的主要属性
a.Protocol属性

  通过Protocol属性可以设置WinSock控件连接远程计算机使用的协议。可选的协议是TCP和UDP对应的VB的常量分别是sckTCPProtocol和sckUDPProtocol,Winsock控件默认协议是TCP。注意:虽然可以在运行时设置协议,但必须在连接未建立或断开连接后。

b.SocketHandle属性
   SocketHandle返回当前socket连接的句柄,这是只读属性。

c.RemoteHostIP属性
  RemoteHostIP属性返回远程计算机的IP地址。在客户端,当使用了控件的Connect方法后,远程计算机的IP地址就赋给了RemoteHostIP属性,而在服务器端,当ConnectRequest事件后,远程计算机(客户端)的IP地址就赋给了这个属性。如果使用的是UDP协议那么当DataArrival事件后,发送UDP报文的计算机的IP才赋给了这个属性。

d.ByteReceived属性
   返回当前接收缓冲区中的字节数

e.State属性
   返回WinSock控件当前的状态

   常数                                值    描述
   sckClosed                          0     缺省值,关闭。
   SckOpen                           1     打开。
   SckListening                       2     侦听
   sckConnectionPending         3     连接挂起
   sckResolvingHost                4     识别主机。
   sckHostResolved                 5     已识别主机
   sckConnecting                    6     正在连接。
   sckConnected                    7     已连接。
   sckClosing                          8     同级人员正在关闭连接。
   sckError                             9   错误


2.WinSock主要方法
a.Bind方法

   用Bind方法可以把一个端口号固定为本控件使用,使得别的应用程序不能再使用这个端口。

b.Listen方法
   Listen方法只在使用TCP协议时有用。它将应用程序置于监听检测状态。

c.Connect方法
   当本地计算机希望和远程计算机建立连接时,就可以调用Connect方法。
   Connect方法调用的规范为:
   Connect RemoteHost,RemotePort

d.Accept方法
   当服务器接收到客户端的连接请求后,服务器有权决定是否接受客户端的请求。

e.SendData方法
   当连接建立后,要发送数据就可以调用SendData方法,该方法只有一个参数,就是要发送的数据。

f.GetData方法
   当本地计算机接收到远程计算机的数据时,数据存放在缓冲区中,要从缓冲区中取出数据,可以使用GetData方法。GetData方法调用规范如下:
   GetData data,[type,][maxLen]
   它从缓冲区中取得最长为maxLen的数据,并以type类型存放在data中,GetData取得数据后,就把相应的缓冲区清空。

g.PeekData方法
   和GetData方法类似,但PeekData在取得数据后并不把缓冲区清空。


3.Winsock控件主要事件

a.ConnectRequest事件

   当本地计算机接收到远程计算机发送的连接请求时,控件的ConnectRequest事件将会被触发。

b.SendProgress事件
   当一端的计算机正在向另一端的计算机发送数据时,SendProgress事件将被触发。SendProgress事件记录了当前状态下已发送的字节数和剩余字节数。

c.SendComplete事件
   当所有数据发送完成时,被触发。

d.DataArrival事件
   当建立连接后,接受到了新数据就会触发这个事件。注意:如果在接受到新数据前,缓冲区中非空,就不会触发这个事件。

e.Error事件
   当在工作中发生任何错误都会触发这个事件。

例子见附件

三,WinSockAPI的使用

1.WSAStartup 函数


    为了在你的应用程序当中调用任何一个Winsock API 函数,首先第一件事情你就是必须通过WSAStartup函数完成对Winsock 服务的初始化,因此需要调用WSAStartup函数。

Declare Function WSAStartup Lib "ws2_32.dll" _
    (ByVal wVersionRequired As Long, lpWSAData As WSAData) As Long

    这个函数有两个参数: wVersionRequired 和 lpWSAData。wVersionRequired 参数定义WindowsSockets 提供能使用的最高版本,它的高位字节定义的是次版本号,低位字节定义的是主版本号。下面的2个Winsock版本在VB中使用的例子:

初始化1.1版本

lngRetVal = WSAStartup(&H101, udtWinsockData)


初始化2.2版本

lngRetVal = WSAStartup(&H202, udtWinsockData)


第二个参数是WSADATA 的数据结构 ,它是接收Windows Sockets 执行时的数据。

Type WSAData
   wVersion       As Integer
   wHighVersion   As Integer
   szDescription  As String * WSADESCRIPTION_LEN
   szSystemStatus As String * WSASYS_STATUS_LEN
   iMaxSockets    As Integer
   iMaxUdpDg      As Integer
   lpVendorInfo   As Long
End Type

数据成员的描述在下表中:

Field                       描述
wVersion                Windows Sockets 版本信息。
wHighVersion           通过加载库文件得到的最高的支持Winsock 的版本,
                             它通常和wVersion值相同。
szDescription           Windows Sockets 执行时的详细描述
szSystemStatus        包含了相关的状态和配置的信息
iMaxSockets             表示同时打开的socket最大数,为0表示没有限制。
iMaxUdpDg               表示同时打开的数据报最大数,为0表示没有限制。
lpVendorInfo            厂商指定信息预留

在Winsock的1.1和2.2版本中没有lpVendorInfo的返回值。因为winsock 2支持多个传输协议,所以iMaxSockets和iMaxUdpDg只能在仅支持TCP/TP的winsock1.1中使用。为了在Winsock2中获得这些值,你可以使用WSAEnumProtocols 函数。

如果成功或者返回一个错误代码,则函数返回 0。

错误代码                            含义
WSASYSNOTREADY            指出网络没有为传输准备好。
WSAVERNOTSUPPORTED     当前的WinSock实现不支持应用程序指定的Windows Sockets规范版本
WSAEINPROGRESS              一个阻塞WinSock调用正在进行
WSAEPROCLIM                   请求的协议没有在系统中配置或没有支持它的实现存在。
WSAEFAULT                       lpWSAData 不是有效的指针



2.WSACleanup 函数

每次调用了WSAStartup函数,你都需要调用WSACleanup函数,通知系统来卸载库文件及清除已分配的资源,这个函数十分简单,没有任何参数:

Declare Function WSACleanup Lib "ws2_32.dll" () As Long


3.建立Socket函数

Declare Function socket Lib "ws2_32.dll" (ByVal af As Long, _
                  ByVal s_type As Long,
                  ByVal Protocol As Long) As Long

函数有3个参数定义建立何种socket,三个参数分别是:
Argument          Description                                           Enum Type
af                     Address family specification.                     AddressFamily
s_type              Type specification for the new socket.      SocketType
Protocol            Protocol to be used with the socket         SocketProtocol
                       that is specific to the indicated address
                       family.

AddressFamily:
    AF_UNSPEC = 0          '/* unspecified */
    AF_UNIX = 1              '/* local to host (pipes, portals) */
    AF_INET = 2              '/* internetwork: UDP, TCP, etc. */
    AF_IMPLINK = 3          '/* arpanet imp addresses */
    AF_PUP = 4                '/* pup protocols: e.g. BSP */
    AF_CHAOS = 5            '/* mit CHAOS protocols */
    AF_NS = 6                  '/* XEROX NS protocols */
    AF_IPX = AF_NS          '/* IPX protocols: IPX, SPX, etc. */
    AF_ISO = 7                 '/* ISO protocols */
    AF_OSI = AF_ISO         '/* OSI is ISO */
    AF_ECMA = 8               '/* european computer manufacturers */
    AF_DATAKIT = 9          '/* datakit protocols */
    AF_CCITT = 10             '/* CCITT protocols, X.25 etc */
    AF_SNA = 11                '/* IBM SNA */
    AF_DECnet = 12           '/* DECnet */
    AF_DLI = 13                 '/* Direct data link interface */
    AF_LAT = 14                '/* LAT */
    AF_HYLINK = 15           '/* NSC Hyperchannel */
    AF_APPLETALK = 16     '/* AppleTalk */
    AF_NETBIOS = 17        '/* NetBios-style addresses */
    AF_VOICEVIEW = 18     '/* VoiceView */
    AF_FIREFOX = 19          '/* Protocols from Firefox */
    AF_UNKNOWN1 = 20    '/* Somebody is using this! */
    AF_BAN = 21               '/* Banyan */
    AF_ATM = 22               '/* Native ATM Services */
    AF_INET6 = 23             '/* Internetwork Version 6 */
    AF_CLUSTER = 24         '/* Microsoft Wolfpack */
    AF_12844 = 25             '/* IEEE 1284.4 WG AF */
    AF_MAX = 26

Socket types:
    SOCK_STREAM = 1       ' /* stream socket */
    SOCK_DGRAM = 2         ' /* datagram socket */
    SOCK_RAW = 3            ' /* raw-protocol interface */
    SOCK_RDM = 4             ' /* reliably-delivered message */
    SOCK_SEQPACKET = 5  ' /* sequenced packet stream */

Protocols:
    IPPROTO_IP = 0                '/* dummy for IP */
    IPPROTO_ICMP = 1            '/* control message protocol */
    IPPROTO_IGMP = 2            '/* internet group management protocol */
    IPPROTO_GGP = 3             '/* gateway^2 (deprecated) */
    IPPROTO_TCP = 6             '/* tcp */
    IPPROTO_PUP = 12           '/* pup */
    IPPROTO_UDP = 17           '/* user datagram protocol */
    IPPROTO_IDP = 22            '/* xns idp */
    IPPROTO_ND = 77             '/* UNOFFICIAL net disk proto */
    IPPROTO_RAW = 255        '/* raw IP packet */
    IPPROTO_MAX = 256


该函数可以建立使用特定协议的网络套接字,例如对于UDP协议可以这样写:
s=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)
s=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)



4.关闭Socket函数

Declare Function closesocket Lib "ws2_32.dll" (ByVal s As Long) As Long

函数有一个参数为建立socket时的Handle




5.连接函数

Declare Function connect Lib "ws2_32.dll" (ByVal s As Long, _
                                           ByRef name As sockaddr_in, _
                                           ByVal namelen As Long) As Long

参数

s             连接的socket句柄。

name       建立连接的地址。

namelen    连接地址的长度。

返回值

成功时返回0。否则返回SOCKET_ERROR以及一个对应的错误号 Err.LastDllError。

显然在调用这个函数时我们需要知道socket句柄,将连接的电脑的端口号和主机名称(或主机IP地址)。我们知道Winsock控件的Connect方法依靠两个变量:RemoteHost和RemotePort。此方法不需要socket句柄,因其已经被封装在COM对象中。你也许认为connect函数应该也接受相同的变量设置,然而,事实并非如此。connect函数的主机地址和端口号的传送是依靠 sockaddr_in 结构。

Public Type sockaddr_in
    sin_family       As Integer
    sin_port         As Integer
    sin_addr         As Long
    sin_zero(1 To 8) As Byte
End Type




6.套接字帮定函数

Declare Function bind Lib "ws2_32.dll" (ByVal s As Long, _
                  ByRef name As sockaddr_in, _
                  ByRef namelen As Long) As Long



s是使用Socket函数创建好的套接字,name指向描述通信对象的结构体的指针,namelen是该结构的长度。该结

构体中的分量包括:
IP地址:对应name.sin_addr.s_addr

端口号:对应name.sin_port
        端口号用于表示同一台计算机上不同的进程(即应用程序),其分配方法有两种:
        第一种分配方法是,进程让系统为套接字自动分配一端口号,这只要在调用bind前将端口号指定为0即可。由系统自动分配的端口号位于1024~5000之间,而1~1023之间的任一TCP或UDP端口都是保留的,系统不允许任一进程使用保留端口,除非其有效用户ID是零(即超级用户)。
        第二种分配方法是,进程为套接字指定一特定端口。这对于需要给套接字分配一众所周知的端口的服务器是很有用的。指定范围在1024~65536之间。

地址类型:对应name.sin_family,一般都赋成AF_INET,表示是internet地址(即IP 地址)。IP地址通常使用点分表示法表示,但它事实上一个32位的长整数,这两者之间可通过inet_addr()函数转换。



7.套接字监听函数

Declare Function listen Lib "ws2_32.dll" (ByVal s As Long, ByVal backlog As Long) As Long

listen函数用来设定Socket为监听状态,这种状态表明Socket准备被连接了。注意,此函数一般在服务程序上使用,其中s是使用Socket函数创建好的套接字,backlog参数用于设定等待连接的客户端数。



8.接受连接请求

Declare Function accept Lib "ws2_32.dll" (ByVal s As Long, ByRef addr As sockaddr_in, _
                                          ByRef addrlen As Long) As Long


服务端应用程序调用此函数来接受客户端Socket连接请求,accept()函数的返回值为一新的Socket,新Socket就可用来完成服务端和客户端之间的信息传递与接收,而原来Socket仍可以接受其他可户端的连接请求。



9.接收信息

Declare Function recv Lib "ws2_32.dll" (ByVal s As Long, _
                                        ByRef buf As Any, _
                                        ByVal buflen As Long, _
                                        ByVal flags As Long) As Long


s    一个已连接的socket的识别符
buf   接受到的数据的缓冲区
len   缓冲区长度
flags 指定从哪调用的标识

第一个参数是socket的句柄-为socket函数返回值。那就是说:我们需要告诉recv函数,哪一个socket正访问函数。

第二个参数是:函数执行之后能装载一些数据的缓冲区。但它不是必须要有足够的长度接收Winsock缓冲区的所有数据,缓冲区的大小限制为8192 字节(8 Kbytes)。因此如果Winsock缓冲区的数据的大小大于recv函数的缓冲区,你必需多次调用此函数,直到获取所有的数据。

如果应用程序定义缓冲区的长度,则recv函数必须知道缓冲区可以存放多少字节。第三个参数就是为了这个目的。

最后一个参数是可选的,今天我们不使用。该参数有两个选择标志: MSG_PEEK 和 MSG_OOB,用于改变函数的行为。

MSG_PEEK 从输入数据中取数。数据拷入缓冲区,但不从输入队列中移走。函数返回当前准备接收的字节数。  
MSG_OOB 处理OOB(Out-of-band带外)数据。在网络上有两种类型的数据包,正常包和带外包。带外包可以通过检验一个TCP/IP包头的一个特定标志来决定。



10.发送信息

Declare Function send Lib "ws2_32.dll" (ByVal s As Long, _
                                        ByRef buf As Any, _
                                        ByVal buflen As Long, _
                                        ByVal flags As Long) As Long


参数参看接收信息

四,服务器与客户机交互

    目前最常用的方法是:服务程序在一个众所周知的地址(其中包括端口信息)监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户对这个服务的地址提出了连接请求。这个时刻,服务程序被唤醒并对客户的请求作出适当的反应。注意,服务器与客户机之间的交互可以是面向连接的(基于流套接字),也可以是无连接的(基于数据报套接字)。


            服务器

           socket()
              |
            bind()
              |
           listen()                                       客户机
              |
              |                                           socket()
              |                     建立连接               |
           accept()   <-------------------------    connect()
              |                     请求数据               |
            recv()   <-----------------------------     send()
              |                                                |
         处理服务请求                                    |
              |                      应答数据              |
            send()    ------------------------------>   recv()
              |                                                |
           close()                                        close()




五,其他

比较:WinSock控件
               优点:使用简单,工作量小。
               缺点:功能少仅支持TCP,UDP协议,需要WinSock控件(系统默认安装不带MSWINSCK.OCX文件)
               适合于初学者
         WinSockAPI
               优点:功能强大,支持多种协议,使用灵活,WinSockAPI调用的wsock32.dll(28K)或ws2_32.dll(69K)为Windows系统自带函数库不必担心缺少文件。
               缺点:使用复杂,编程量大,需要一定基础
               适合于要求较高的网络程序
 
来自: zele >  《Internet》
献花( 0)
+1
分享:
 
VB使用WinSock API点对点聊天实例 VB6.0使用WinSock API点对点聊天程序实例,VB聊天源码,API.bas中有大家常用的网络聊天API,比如清理内存中一些东西、定义一个连接(正确的叫法是:套接字)、关闭套接字、把端口和套接字绑定在一起、监听,如果你写服务端程序的话,用这个函数来开始监听是否有客户端请求连接,第1个参数是套接字句柄,第2个是允许客户端连接的数量、还有设置接收消息的窗口函数用的,用它把套接字绑定一个窗口,以后关于这个套接字的消息,都会发送到那个窗口的消息处理函数,比如连接成功,连接失败,有客户端请求连接,网络数据到达,网络断开等各种情况,参数:套接字句柄,窗口句柄,消息标志(这样才能知道哪条消息是来自被 立即下载

相关推荐

winsock 控件 的下载

winsock 控件 的下载winsock 控件 的下载

用 WinSock 控件下载文件

用 WinSock 控件下载文件1 增加一个 Winsock 控件, 名称为 Winsock1。2 建立连接:Winsock1.RemoteHost = "nease.com"Winsock1.RemotePort = 80Winsock1.Connect3 在Winsock1.Connect 事件中加入:Dim strCommand as StringDim strWebPage as St

天天向上... ... 2370

利用WinSock 编程接口,实现点对点通信

WinSock 是Windows 操作系统下的Socket 编程接口,通过WinSock 函数库可以实现基于TCP/IP 协议的进程之间通信。Wireshark 是一个网络分析工具,可以利用该工具捕获本机网络出口处的网络流量(网络包)。 实验要求: (1) 基于WinSock 开发一个简单的客户/服务器消息传输程序,客户端能够发送由标准输入得到的消息(字符串输入),服务器能够接收并将其显示在标准输出上。 (2) 利用Wireshark 软件捕获上述通信中的网络包,并分析网络包的以太网头信息、IP 头信息。

谈谈"WinSock控件及WinSockAPI"

WinSock简介       Socket(套接字)最初是由加利福尼亚大学Berkeley(伯克利)分校为UNIX操作系统开发的网络通信接口,随着UNIX的广泛使用,Socket成为当前最流行的网络通信应用程序接口之一。20世纪90年代初,由Sun Microsystems,JSB,FTP software,Microdyne和Microsoft等几家公司共同定制了一套标准,即Windows

NOI Study 1616

HITS算法详解及代码实现

占坑

蓁蓁尔的博客 7462

人大金仓的‘影子表’sys_user:搞懂Schema优先级,告别字段不存在的报错

本文深入解析人大金仓数据库中‘影子表’sys_user的Schema优先级问题,帮助开发者解决字段不存在的报错。通过分析Schema搜索路径机制,提供四种解决方案,包括连接时指定Schema、动态调整搜索路径、永久修改用户设置和使用完全限定表名,确保查询准确无误。

weixin_30329623的博客 597

VB6 WinSock控件及WinSockAPI

WinSock简介       Socket(套接字)最初是由加利福尼亚大学Berkeley(伯克利)分校为UNIX操作系统开发的网络通信接口,随着UNIX的广泛使用,Socket成为当前最流行的网络通信应用程序接口之一。20世纪90年代初,由SunMicrosystems,JSB,FTP software,Microdyne和Microsoft等几家公司共同定制了一套标准,即WindowsSo

kirawoo的专栏 1万+

【vue看板】

大屏看板提示:以下是本篇文章正文内容,下面案例可供参考提示:这里对文章进行总结:代码量较多,看板中的。

weixin_46223284的博客 2772

关于网络编程方面VB的WINSOCK编程

VB网络编程--WinSock控件及WinSockAPI一,WinSock简介Socket(套接字)最初是由加利福尼亚大学Berkeley(伯克利)分校为UNIX妈作系统开发的网络通信接口,随着UNIX的广泛使 用,Socket成为当前最流行的网络通信应用程序接口之一。20世纪90年代初,由Sun Microsystems,JSB,FTP software,Microdyne和Microsoft等

wjb9921的专栏 5167

基于RK3588与Gstreamer的端侧实时视频流AI推理系统构建

本文详细介绍了基于RK3588芯片与Gstreamer框架构建端侧实时视频流AI推理系统的完整方案。通过硬件选型、环境配置、OpenCV编译优化、视频流处理实战及模型部署等关键环节的深入解析,展示了如何利用RK3588的6TOPS NPU算力与Gstreamer的低延迟特性,实现工业质检、智能交通等场景下的高效边缘计算。特别针对RTSP推拉流优化、RKNN模型转换等核心技术难点提供了实用解决方案。

weixin_30516243的博客 381

【可信数据空间-连接器技术架构设计方案】

一句话概括连接器是可信数据空间的“数据保镖”和“外交官”。连接器就是一个部署在你本地的软件代理,它代表你安全地对外提供数据服务,确保在共享数据价值的同时,牢牢守住数据的所有权和控制权。它是实现“数据可用不可见”这一理想的关键技术部件。一个生动的比喻:银行的金库和接待员想象一下,你的数据就是藏在银行金库里的黄金和钞票。金库(你的内部数据库): 绝对安全,外人绝对不能进。接待员(连接器): 坐在银行大厅里,负责与客户打交道。客户向接待员提出请求:“我想取1000元。

u014716614的博客 2272

基于VB中WINSOCK控件的网上象棋系统的实现

本文发表在《微型机与应用》杂志2001年第3期。 基于VB中WINSOCK控件的网上象棋系统的实现 马根峰1,孙艳2 ,王平1(1.重庆邮电学院自动化学院,重庆,400065;2.铁道部第十九工程局四处,内蒙通辽,028000 )摘要本文首先介绍了Visual Basic中的WINSOCK控件的使用方法,然后深入探讨了网上...

weixin_30535043的博客 173

【ComfyUI】FluxKontext 身形调优与体态增强

AI身形调优与体态增强解决方案 该工作流通过Flux系列模型实现人物体态的智能化增强,主要特点包括: 采用UNet主体模型+双文本编码器+身形增强LoRA的架构组合 通过ReferenceLatent保持原始姿态的同时强化胸腰臀比例 完整工作流包含图像加载、文本编码、潜空间映射等8个核心节点 支持自动化的前后效果对比展示 应用优势: 保持人物自然姿态的前提下实现局部强化 支持通过Prompt精确控制增强方向 适用于摄影后期、角色美化等创作场景 输出效果稳定且风格统一 使用方

Mr数据杨 1302

VB多用户Winsock控件通讯实例

有一位优快云的朋友不明白如何利用Winsock控件进行多用户之间的网络通讯,于是俺写了一个,希望对有此方面需要的朋友有所帮助!     本代码可以同时支持多个客户端的连接、识别和通讯,主要思路是在连接成功后,由客户主动发送一个用户名,服务器端以此用户名对客户进行区分,为防止同名客户,服务器端在用户名后加了一个后缀。由于写得匆忙,难免有失误,恳请指正!     服务器代码如下:

HarvestD 5940

【异常】OpenClaw网关仪表盘 pairing required 报错排查与解决方案

在OpenClaw网关仪表盘页面,完成WebSocket URL、网关令牌等必填项配置后,点击「连接」按钮尝试建立网关连接时,页面下方出现红色报错提示框,核心报错内容为,无法完成网关连接建立,且该报错在令牌配置正确、网络链路通畅的场景下仍会触发。该报错常见于非本地回环地址的访问场景,包括局域网远程访问、公网域名/IP访问、云服务器部署的网关远程管理等场景,本地127.0.0.1回环地址访问通常可正常连接。

奶爸的编程之路,也就一周冷个三天 1080

2、MOSFET基本物理效应及其BSIM4模型解析

本文深入探讨了MOSFET的基本物理效应及其在BSIM4模型中的数学表述,涵盖门和沟道的几何结构、温度依赖性、材料模型选项、阈值电压计算、以及其他关键物理效应如LDD电阻、有限电荷厚度、有效迁移率等。同时解析了机械应力、邻近效应及布局依赖效应对MOSFET性能的影响,并通过参数表和建模流程提供了精确建模的指导,旨在帮助读者优化MOSFET器件性能与可靠性。

purple的博客 566

WinSockAPI的使用

以前用JAVA和VB写过socket的程序,JAVA怎么写的基本已经不记得了,VB好像是调用控件的-。- 前几天想用C写一个,结果TMD在linux下编译的好好的能用,到Windows下就是编译不通过  闷  google之,发现windows下编程的很多限制(姑且称之为限制吧,其实是我windows编程水平弱-.-)  现在linux和windows下都行了,大笑三声

Kingbeful的专栏 1304

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

WinSockAPI的用途和用法详解

对网络知识有所遗忘的话,可以先简单补习一下“套接字”概念,再来看这些函数就会觉得他们的用途很好理解,如果想更详细的学习,可以参看 Socket通信原理。 关于各函数返回值,可以参看 socket函数返回值分析。 一,服务器与客户机交互        先简单俯瞰一下目前最常用的方法:服务程序在一个众所周知的地址(其中包括端口信息)监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个...

a_lgorithm的博客 1479

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

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

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

基于Winsock API的VC网络编程实战

基于Winsock API的VC网络编程实战   随着计算机信息技术的飞速发展,互联网与人类社会的工作、生活越来越紧密相关,它已经成为人类获取、交流信息的重要途径和手段。所以当前对于开发人员来说,网络编程已是必备的技能。本实例详细介绍了如何利用Winsock API编写网络应用程序。  一、实现方法  在网络编程中最常用的方案便是Client/Server (客户机/服务器)模型。在这种方案中客...

weixin_33795806的博客 156

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

用WINSOCK API实现同步阻塞方式的网络通讯

<br /> 在VB中进行网络通讯时,一般都爱使用Winsock控件,但此控件有两点缺点,一是需要一个窗口(当然也可以修改vbp文件,实现无窗口加载Winsock控件),二是通讯方式为异步非阻塞的,对于某些基于应答式的协议来说,比如HTTP、POP3、SMPT等,使用阻塞方式往往要方便得多,而且代码流程也清晰得多,增强了可读性,更不用说灵活性了(比如超时设置、缓冲区设置等)。虽然网络上有一些使用API编写的通讯类,但大类使用了WSAAsyncSelect方式,完全是Winsock的API版本,根本没啥意义,

s170301048的专栏 764

winsock收发数据数据的缓存区类型

所有关系到收发数据的缓冲都属于简单的 c h a r类型。也就是说,这些函数没有“U n i c o d e”版本。这一点对Windows CE来说尤为重要,因为Windows CE默认使用U n i c o d e。使用U n i c o d e时有一种选择,即把字符串当作c

coderlife的专栏 1084

C/C++bug记录

注:本文主要记录在编程实践中遇到的C/C++bug。1.字节对齐  字节对齐涉及到节省内存空间和提高CPU访问内存效率,而一般的PC程序员不会去设置字节对齐(默认的字节对齐访问效率较高)。字节对齐知识点,详见C语言字节对齐问题详解   碰过的bug表现:程序中有一个C++类,它的一个int型变量表现极其诡异,明明给它赋值,但是读出的数据与赋给它的值不一样。通过调试,发现它在读取内存时错误,偏移了

Struggler的专栏 1458

关于WinSocket

一,WinSock简介 Socket(套接字)最初是由加利福尼亚大学Berkeley(伯克利)分校为UNIX操作系统开发的网络通信接口,随着UNIX的广泛使用,Socket成为当前最流行的网络通信应用程序接口之一。20世纪90年代初,由Sun Microsystems

jamesjxin的专栏 2656

delphi ip控件_使用Delphi确定您的IP

delphi ip控件 Internet this and internet that. Everybody wants to be on the internet nowadays. Everyone wants to program internet nowadays. 互联网这个和互联网那个。 如今,每个人都希望能够上网。 如今,每个人都希望对互联网进行编程。 One of the ...

cumao2792的博客 350
上一篇: iptables网关(linuxBox)和squid(squidBox)不在同一台机器的时候,如何作透明代理?
下一篇: DECODE函数和CASE WHEN 比较
no pay no gay
博客等级 码龄14年 73粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值