c语言虽说是跨平台的,可以一次编写,处处编译,处处运行。但是在socket方面显然不是,这里有很多原因。习惯了Linux c socket编程,在Windows下c的socket编程又不太一样,我们还得重新编写相关代码,不过道理都是相通的。
首先包就不一样:
#include <winsock2.h>
#pragma comment(lib, "wsock32.lib ")
然后介绍几个和Linux下的API相似的函数:
1、创建套接字——socket()
功能:使用前创建一个新的套接字
格式:SOCKET PASCAL FAR socket(int af,int type,int procotol);
参数:af: 通信发生的区域
type: 要建立的套接字类型
procotol: 使用的特定协议
2、指定本地地址——bind()
功能:将套接字地址与所创建的套接字号联系起来。
格式:int PASCAL FAR bind(SOCKET s,const struct sockaddr FAR * name,int namelen);
参数:s: 是由socket()调用返回的并且未作连接的套接字描述符(套接字号)。
其它:没有错误,bind()返回0,否则SOCKET_ERROR
地址结构说明:
struct sockaddr_in
{
short sin_family;//AF_INET
u_short sin_port;//16位端口号,网络字节顺序
struct in_addr sin_addr;//32位IP地址,网络字节顺序
char sin_zero[8];//保留
}
3、建立套接字连接——connect()和accept()
功能:共同完成连接工作
格式:int PASCAL FAR connect(SOCKET s,const struct sockaddr FAR * name,int namelen);
SOCKET PASCAL FAR accept(SOCKET s,struct sockaddr FAR * name,int FAR * addrlen);
参数:同上
4、监听连接——listen()
功能:用于面向连接服务器,表明它愿意接收连接。
格式:int PASCAL FAR listen(SOCKET s, int backlog);
5、数据传输——send()与recv()
功能:数据的发送与接收
格式:int PASCAL FAR send(SOCKET s,const char FAR * buf,int len,int flags);
int PASCAL FAR recv(SOCKET s,const char FAR * buf,int len,int flags);
参数:buf:指向存有传输数据的缓冲区的指针。
6、多路复用——select()
功能:用来检测一个或多个套接字状态。
格式:int PASCAL FAR select(int nfds,fd_set FAR * readfds,fd_set FAR * writefds,
fd_set FAR * exceptfds,const struct timeval FAR * timeout);
参数:readfds:指向要做读检测的指针
writefds:指向要做写检测的指针
exceptfds:指向要检测是否出错的指针
timeout:最大等待时间
7、关闭套接字——closesocket()
功能:关闭套接字s
格式:BOOL PASCAL FAR closesocket(SOCKET s);
顺便加一句,vc++6.0格式化代码,select all -> alt-F8就可以格式化代码,这个和eclipse的source->format一样好用。
分享到:
相关推荐
总之,"协助窗口置顶"项目展示了C++在Windows平台上进行系统级编程的能力,尤其是与Windows API的集成,以及如何通过自定义绘图实现伪GUI。这对于想要深入学习Windows编程和C++的开发者来说,是一个很好的实践案例。...
在Windows操作系统中,窗口置顶功能是一项非常实用的特性,尤其对于多任务处理的用户来说。Windows窗口置顶小工具正是为了实现这一功能而设计的,它能够让你指定的窗口始终显示在其他窗口之上,方便你在不同的应用...
在编程中,这通常涉及到修改窗口的Z顺序(层叠顺序)。在C语言中,实现这个功能需要使用Windows API,特别是`SetWindowPos`函数,它可以改变窗口的位置、大小和Z顺序。 接下来是"结束进程"的部分。在Windows下,`...
例如,编程人员可以在查看代码的同时保持终端窗口置顶,或者视频编辑者在预览视频的同时编辑其他文件。此外,它们也适用于在线会议或教学场景,确保共享屏幕时的关键窗口始终可见。 总的来说,"windows窗口置顶工具...
在本文中,我们详细介绍了如何通过 LabVIEW 调用 Windows API 函数来实现 VI 窗口置顶。通过调用 FindWindowA 函数获取当前窗口句柄,然后使用 SetWindowPos 函数设置窗口置顶。这种方法可以帮助我们实现 VI 窗口的...
在项目开发中,希望窗体一直处于置顶状态,使用该Demo可方便实现这个功能。
这在编程、设计、多任务处理或者视频聊天时尤其有用。针对这一需求,有两款优秀的Windows窗口置顶软件被分享出来,它们能帮助我们高效地管理工作和娱乐。 首先,让我们来了解一下什么是窗口置顶。窗口置顶是一种...
"Window-on-top"是一款专为Windows操作系统设计的小型实用程序,其主要功能是使用户能够轻松地将任意窗口设置为始终在其他窗口之上显示,即实现窗口置顶。这一功能在多任务处理或需要特定窗口始终保持可见的情况下...
用户只需要在想要置顶的窗口上按下这个组合键,该窗口就会自动浮动到所有其他窗口之上,始终显示在最前面。这个功能极大地提升了多任务处理的效率,用户不再需要频繁切换窗口,只需专注于当前需要关注的内容。 ...
对一个窗口进行置顶操作可以有两种方式,第一种方式,采用热键置顶,该热键默认为F8,用户可以根据自己的习惯更改热键,采用热键置顶时,激活想置顶的窗口,然后按下热键,即可把该窗口置顶,再次按下热键取消该窗口...
标题中的“程序置顶”指的是在计算机操作中,让某个应用程序的窗口始终显示在其他所有窗口的上方,即使用户切换到其他程序或者打开新的窗口,这个特定程序的窗口仍然保持在最前端。这是一种非常实用的功能,尤其对于...
在实际使用中,窗口置顶功能可以通过多种途径实现,如使用第三方工具、编程语言编写自定义脚本,或者某些软件内置的置顶选项。例如,一些文本编辑器和IDE(集成开发环境)就提供了窗口置顶的功能。然而,这个压缩包...
在实际编程中,我们还需要考虑到各种边界情况,比如用户是否允许窗口置顶,以及如何在用户取消置顶时恢复窗口的正常状态。此外,易语言提供了丰富的控件和事件,我们可以结合这些元素来设计用户友好的界面,比如添加...
Unity Windows 程序前置窗口置顶
Top_Windows应用程序窗口一键置顶工具是一款使用AutoHotKey开发的窗口置顶工具,使用可以把任意一个窗口设置为顶层窗口,使其不会被其它非置顶的窗口遮盖。永远保持在最上方,支持使用快捷键,可取消置顶,使用简单、...
在Windows 10环境下,这样的工具需要兼容现代操作系统的特性,比如高DPI支持和触摸优化等。同时,该工具被标为"win10",意味着它可能专门针对Windows 10进行优化,以确保在该系统上的稳定性和性能。 安全性和无附带...
例如,设计师在参考素材时可以将参考图片窗口置顶,编程人员可以将代码编辑器置顶,以便在查阅文档或搜索资料时保持代码视图不变。此外,对于需要频繁切换窗口的工作,如视频会议与工作文档之间切换,窗口置顶也能...
3. **窗体置顶**:在Windows系统中,窗体置顶意味着窗口总是在其他窗口之上显示。在Unity中,这可能需要通过编写C#脚本来实现,通过修改窗口的ZOrder或者使用Unity内置的WindowSystem组件来确保窗口始终在最前面。 ...
一旦快捷键被按下,系统会发送一个`WM_HOTKEY`消息到注册的窗口,程序可以通过处理这个消息来执行相应的功能,比如调用置顶的代码。 在实际应用中,窗口置顶小工具往往设计成便携式且用户友好的。例如,"窗口置顶....
在Windows操作系统环境下,WinTop的兼容性表现出色。无论是在处理办公文档、编程代码,还是观看教学视频时,只需一键,就能确保所需窗口始终保持可见,无需担心被其他窗口覆盖。这极大地优化了多任务处理的体验,...