Ⅰ socket接口网络编程

面向无连接的端对端通信
//#include <winsock2.h>
//#pragma comment(lib,"WS2_32.lib")
WSADATA wsd;
SOCKET s;
char buf[1024];
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
return -1;//失败
}
s=socket(AF_INET,SOCK_DGRAM,0);
if(s==INVALID_SOCKET)
{
WSACleanup();
return -1;//创建套接字失败
}
SOCKADDR_IN servAddr;
servAddr.sin_family=AF_INET;
servAddr.sin_addr.s_addr=inet_addr(%%1);
servAddr.sin_port=htons(INADDR_ANY);
if(bind(s,(SOCKADDR*)&servAddr,sizeof(SOCKADDR_IN))==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//绑定套接字失败
}
int nServAddrlen=sizeof(servAddr);
ZeroMemory(buf,sizeof(buf));
if(recvfrom(s,buf,size(buf),0,(SOCKADDR*)&servAddr,nServAddrlen)==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//接收数据失败
}
CString %%2(buf);
ZeroMemory(buf,sizeof(buf));
strcpy(buf,%%3);
SOCKADDR_IN clientAddr;
clientAddr.sin_family=AF_INET;
clientAddr.sin_addr.s_addr=inet_addr(%%4);
clientAddr.sin_port=htons((short)%%5);
int nClientlen=size(clientAddr);
if(sendto(s,buf,sizeof(buf),0,(SOCKADDR*)&clientAddr,nClientlen)==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//向服务器发送数据失败
}
closesocket(s);
WSACleanup();

Ⅱ 如何用C/C++编程,获取网络接口数据

这种问题其实没什么必要来问,自己先查MSDN想想办法,对自己有好处。
既然是求所有元素,那不管子节点是否展开了。
估计代码:
HTREEITEM hSelectItem = m_tree.GetSelectedItem();
all_item(hSelectItem);
void all_item(HTREEITEM hItem)
{
HTREEITEM hChildItem = m_tree.GetChildItem(hItem);
HTREEITEM hNext = NULL;
while(hChildItem)
{
//GetItemData(hChildItem)还是GetItemText自己取
if(hChildItem.ItemHasChildren(hItem))
{
all_item(hChildItem);
}
hNext = m_tree.GetNextItem(hChildItem);
hChildItem = hNext;
}

}
自己测试了下有点问题,新代码
void ListTree(HTREEITEM hItem)
{
HTREEITEM hChildItem = m_tree.GetChildItem(hItem);
HTREEITEM hNext = NULL;
while(hChildItem)
{
//GetItemData(hChildItem)还是GetItemText自己取
TRACE( m_tree.GetItemText(hChildItem) + _T("\n"));
if(m_tree.ItemHasChildren(hChildItem))
{
ListTree(hChildItem);
}
hNext = m_tree.GetNextItem(hChildItem,TVGN_NEXT);
hChildItem = hNext;
}

}
首先SetCapture,WindowFromPoint()找到那个窗口的句柄,然后枚举窗口子控件EnumChildWindows。得到控件类名是不是syslistview32,得到控件句柄就好说了。
这个过程比较复杂。很多我自己没实际操作过。。。
相信对于SPY++的模拟,网上有很多开源,这只是个思路。

hook没有写到,你要做的是一个鼠标钩子,网上很多资料,我这里只是把树形控件的某个节点的子节点列出的方法。

Ⅲ 在windows下用C语言如何实现socket网络编程,需要用到哪些头文件或者库

需要用到的头文件包含:

#include <winsock2.h>

#include <windows.h>

与Linux环境下socket编程相比,windows环境多了一个步骤:启动或者初始化winsock库

Winsock,一种标准API,一种网络编程接口,用于两个或多个应用程序(或进程)之间通过网络进行数据通信。具有两个版本:

Winsock 1:

Windows CE平台支持。

头文件:WinSock.h

库:wsock32.lib

Winsock 2:

部分平台如Windows CE貌似不支持。通过前缀WSA可以区别于Winsock 1版本。个别函数如WSAStartup、WSACleanup、WSARecvEx、WSAGetLastError都属于Winsock 1.1规范的函数;

头文件:WinSock2.h

库:ws2_32.lib

mswsock.h用于编程扩展,使用时必须链接mswsock.dll

(3)网络接口编程扩展阅读

winsock库的加载与卸载:

加载:int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);

加载成功,返回值为0。

WORD wVersionRequested:加载的winsock版本,使用宏MAKEWORD(x, y),x表示高字节,y表示低字节。然而使用时MAKEWORD(2, 2)。高字节与低字节相同~~

LPWSADATA lpWSAData:WSADATA结构的指针,传入参数后,系统帮助我们填充版本信息。有兴趣的可以看看结构体内容,不过基本用不着。

卸载:int WSACleanup(void);比起加载,卸载的函数真是轻松愉快。