go中引用socket库 ws2_32
来源:互联网 发布:台达触摸屏编程手册 编辑:程序博客网 时间:2024/05/22 05:22
#cgo windows,amd64 LDFLAGS: -lWS2_32
引用的C头部添加上面这个 写个例子
package main/*#cgo windows,amd64 LDFLAGS: -lWS2_32#include <windows.h>#include <stdio.h>#include "define.h"#include <windows.h>#define host "127.0.0.1"#define port 5556#pragma comment(lib, "ws2_32.lib")void socket_def(SOCKET *sock, char *host_t, int port_t){ WSADATA wsaData; struct sockaddr_in saddr; if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { printf("error"); } saddr.sin_family = AF_INET; saddr.sin_port = htons(port_t); saddr.sin_addr.s_addr = inet_addr(host_t); *sock = socket(AF_INET, SOCK_DGRAM, 0); if (*sock == INVALID_SOCKET) { printf("socket initialize failed: %d/n", WSAGetLastError()); }}int get_process_info(){ HANDLE hDevice; int status; HANDLE m_hCommEvent; ULONG dwReturn; char outbuf[255]; CHECKLIST CheckList; SOCKET sock; WSADATA wsaData; struct sockaddr_in saddr; if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) { printf("error"); } saddr.sin_family = AF_INET; saddr.sin_port = htons(port_t); saddr.sin_addr.s_addr = inet_addr(host_t); sock = socket(AF_INET, SOCK_DGRAM, 0); hDevice = NULL; m_hCommEvent = NULL; hDevice = CreateFile("\\\\.\\MyEvent", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (hDevice == INVALID_HANDLE_VALUE) { printf("createfile wrong\n"); getchar(); return 0; } m_hCommEvent = CreateEvent(NULL, 0, 0, NULL); printf("hEvent:%08x\n", m_hCommEvent); status = DeviceIoControl(hDevice, IOCTL_PASSEVENT, &m_hCommEvent, sizeof(m_hCommEvent), NULL, 0, &dwReturn, NULL); if (!status) { printf("IO wrong+%d\n", GetLastError()); getchar(); return 0; } CheckList.ONLYSHOWREMOTETHREAD = TRUE; CheckList.SHOWTHREAD = TRUE; CheckList.SHOWTERMINATETHREAD = FALSE; CheckList.SHOWTERMINATEPROCESS = FALSE; status = DeviceIoControl(hDevice, IOCTL_PASSEVSTRUCT, &CheckList, sizeof(CheckList), NULL, 0, &dwReturn, NULL); if (!status) { printf("IO wrong+%d\n", GetLastError()); getchar(); return 0; } printf(" [Process Name] [PID] [TID] [Parent Process Name] [PID] [TID]\n"); while (1) { ResetEvent(m_hCommEvent); WaitForSingleObject(m_hCommEvent, INFINITE); status = DeviceIoControl(hDevice, IOCTL_PASSBUF, NULL, 0, &outbuf, sizeof(outbuf), &dwReturn, NULL); if (!status) { printf("IO wrong+%d\n", GetLastError()); getchar(); return 0; } printf("%s", outbuf); sendto(sock,outbuf,strlen(outbuf),0,(struct sockaddr *)&saddr,sizeof(saddr)); } status = DeviceIoControl(hDevice, IOCTL_UNPASSEVENT, NULL, 0, NULL, 0, &dwReturn, NULL); if (!status) { printf("UNPASSEVENT wrong+%d\n", GetLastError()); getchar(); return 0; } status = CloseHandle(hDevice); status = CloseHandle(m_hCommEvent); getchar(); return 0;}*/import "C"import ("net""fmt")func main() {C.get_process_info()var localaddress,_=net.ResolveUDPAddr("udp",":5556")var udplistener,err=net.ListenUDP("udp",localaddress)if err!=nil{fmt.Print("error")return}defer func(){udplistener.Close()}() var buf[255]byten,_,err:=udplistener.ReadFromUDP(buf[0:])if err!=nil{fmt.Print("dd")return}fmt.Print(string(buf[0:n]))}
监听到进程启动通过socket发送给指定的端口。
0 0
- go中引用socket库 ws2_32
- Qt 中 链接Ws2_32.lib
- Qt 中 链接Ws2_32.lib
- C++ Socket没有链接Ws2_32.lib错误
- vs中怎么去链接一个库文件(ws2_32.lib)
- vs2012 怎么添加ws2_32.lib 库
- eclipse添加动态链接库ws2_32
- Go实战--golang中使用WebSocket实时聊天室(gorilla/websocket、nkovacs/go-socket.io)
- vs2008中#pragma comment(lib, "ws2_32.lib")加载的位置
- go语言socket编程
- Go Socket编程
- #include <winsock2.h> #pragma comment(lib, "ws2_32.lib") 与套接字(socket)
- 解决方案下两个工程的运行+添加ws2_32.lib库
- 未包含链接库文件ws2_32.lib导致的错误
- WS2_32.DLL
- ws2_32.dll
- Go 切片 引用类型说明
- go常用引用包推荐
- WCF入门教程(二)从零做起-创建WCF服务
- 55个必备技巧带你玩转JavaScript
- Android图片加载框架Picasso最全使用教程
- 图片批量处理
- JQuery 中each的使用方法
- go中引用socket库 ws2_32
- 判断点击点是不是在UICollectionView中的cell上
- 百度地图api 实时显示 每个人的位置和头像
- Linux 2.6内核中新的锁机制--RCU
- 谈谈企业的数据工作!——企业的数据分析能力金字塔
- 转屏及数据保存
- 小型的员工管理系统-SSM-06
- 【怎样写代码】参数化类型 -- 泛型(三):泛型之类型参数
- android:inputType