在多网卡电脑的程序中,怎样绑定网卡IP,让数据从绑定网卡进出。 30C

在一台电脑装上装有2个网卡, 这两个网卡都能同时上网,现用VC的MFC类的CInternetSession, CHttpFile,CHttpConnection获取网页数据,如下程序,
现在想对不同的网站分别绑定不同的网卡,如百度网就绑定网卡1, 新浪网就绑定网卡2, 让网页数据从绑定网卡传输。
但我现在的程序中,是没有绑定网卡,不知道数据从那个网卡传输,看了这三个类的文档,都没有看到绑定网卡IP的函数,请各位有经验的朋友指点下。
INT Dialog1::GetFile(const CString strUrl,const CString strSavePath)

{

unsigned short nPort; //用于保存目标HTTP服务端口

CString strServer, strObject; //strServer用于保存服务器地址,strObject用于保存文件对象名称

DWORD dwServiceType,dwRet; //dwServiceType用于保存服务类型,dwRet用于保存提交GET请求返回的状态号

//创建网络连接对象,HTTP连接对象指针和用于该连接的HttpFile文件对象指针,注 

CInternetSession intsess;

CHttpFile * pHtFile = NULL;

//建立网络连接   

CHttpConnection * pHtCon = intsess.GetHttpConnection(strServer,nPort,_T("ngb"),_T("ngb"));

CString FormDataType = _T("Content-Type: application/x-www-form-urlencoded");
CString m_formdat = _T("action=login&login_username=ngb&login_password=ngb");

//发起GET请求  

pHtFile = pHtCon->OpenRequest(CHttpConnection::HTTP_VERB_GET,strObject);

if(pHtFile == NULL)

{

//发起GET请求失败

intsess.Close();

delete pHtCon;pHtCon = NULL;

return -3;

}

}

1个回答

绑定网卡对应的IP

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
一个网卡绑定多个IP发送URL的问题
如果一个网卡上绑定了多个IP,发送URL请求到服务端,服务端获取到请求的远程IP到底是哪个? 难道是随机的吗?
QT多网卡下,udpsocket如何绑定指定某个网卡的某个IP?
udpSocket->bind(“192.169.0.1”, 7755); 已经IP绑定某个PORT了,组播过来的数据仍然报这个错误,求大神指导![图片说明](https://img-ask.csdn.net/upload/201711/23/1511431193_654630.png)
UDP组播消息,双网卡一个有线连接,一个WiFi无线网卡,想让消息从有线发送出去,怎么绑定网卡ip?
电脑有双网卡,一个有线连接路由器,一个无线网卡连接外网,想通过udp组播发送消息,但现在无线网卡不禁用就不好使。想请问怎么绑定网卡ip,试了几个方法都不好用。请指点。 mreq.imr_interface.S_un.S_addr = inet_addr("169.254.216.187"); mreq.imr_multiaddr.S_un.S_addr = inet_addr("224.0.0.1"); setsockopt(clientSocket, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char*)&mreq, sizeof(ip_mreq)); 利用以上算法绑定不上,测试不成功。其中169.254.216.187为想要发送的网卡ip,"224.0.0.1"为组播地址。
linux网桥,物理网卡eth0向虚拟网卡tap0转发数据失败
在linux(centos6.5)中,建立了一个网桥br0,绑定了端口eth0(物理网卡)和tap0(虚拟网卡),物理网卡能抓到所有包,而tap0只能抓到arp包,不是完全copy物理网卡上的包,(已经设置过 ip_forward),哪位高人指点一下,如何设置
winserver四块网卡两两绑定之后配置两个IP
![图片说明](https://img-ask.csdn.net/upload/201911/06/1573040211_716544.jpg)![图片说明](https://img-ask.csdn.net/upload/201911/06/1573040226_592813.jpg)!
虚拟机中Host-Only模式网卡无法被主机ping通
我是网络小白,最近在使用得到一个任务是搭建线上环境,并且使用vagrant进行打包。 线上环境是Centos6.6,Apache2.4.4,PHP5.5.3,我下载的软件是CentOS6.6的ios镜像 并在搭建好环境后使用vagrant将环境打包成了.box 使用box启动新的虚拟机时遇到了如下问题 问题一: 在Vagrantfile文件中配置添加config.vm.network "private__network",ip:"192.168.10.35",在vagrant up启动虚拟机后ip绑定失效。 在遇到以上问题后我就去网上下载了一个centOS的box文件并也使用Vagrantfile配置静态Ip,启动后发现ip成功绑定,然后查看配置,发现vagrant创建了一张新的网卡,eth4,网卡使用hots-only模式,并且主机是可以ping通该网卡的ip的。看到这些后我就在自己的虚拟机中也手动创建了一张网卡eth1_,也是采用的_host-only模式,并启成功启动了该网卡,然后出现 了第二个问题 问题二:发现主机无法ping通该网卡,在反复对比两台主机配置后都没有发现差异。但是无意间发现了virtualbox启动界面的差异,如下图所示: 图一,我的虚拟机_ ![图片说明](https://img-ask.csdn.net/upload/201807/31/1533015945_682206.jpg) _图二,成功绑定ip并平通的虚拟机_ ![图片说明](https://img-ask.csdn.net/upload/201807/31/1533015975_651207.jpg)
在校大学生求各位大佬,C++socket bind绑定ip地址失败,错误码10038,怎么解决?
#include <winsock2.h> #include <ws2tcpip.h> #include <stdio.h> #include <stdlib.h> #include <iostream> #pragma comment(lib,"WS2_32.lib") #define BUFFER_MAX 2048 #define IP_HDRINCL 2 #define SIO_RCVALL _WSAIOW(IOC_VENDOR,1) using namespace std; int main(){ SOCKET sock; int n_read,proto; int flag = 1; char buffer[BUFFER_MAX]; char LocalName[256]; char *ethhead,*iphead,*tcphead,*udphead,*icmphead,*p; WSADATA WSAData; if(WSAStartup(MAKEWORD(2,2),&WSAData)!=0) { printf("WSAStartup ERROR.\\n"); //如果初始化WSADATA结构得到错误码,则显示出错信息 return -1; } // if(sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW)<0){ // cout<<"Socket创建失败"<<endl; // exit(0); // } // setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (char*)&flag, sizeof(flag)); //设置 IP 头操作选项 ////////////////////////创建并设置原始套接字 sock = socket(AF_INET, SOCK_RAW, IPPROTO_IP);//启用winsock创建原始套接字,SOCK_RAW 类型表示原始套接字类型混杂模式,也就是接收所有包 setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (char*)&flag, sizeof(flag));//设置原始套接字,设置 IP 头操作选项 ////////////////////////把原始套接字绑定到本地主机网卡上,实现将本地网卡置于混杂模式 if(gethostname((char*)LocalName, sizeof(LocalName)-1)!=0) //获取本地主机IP { printf("获取主机名失败 Error:%d.\\n",WSAGetLastError()); return -1; } gethostname((char*)LocalName, 256);//把本地主机名存放入指定的缓冲区中 hostent *pHost = gethostbyname((char*)LocalName); SOCKADDR_IN addr_in; //获取本地 IP 地址 addr_in.sin_addr = *(in_addr *)pHost->h_addr_list[0]; addr_in.sin_family = AF_INET; addr_in.sin_port = htons(40000); if(bind(sock, (PSOCKADDR)&addr_in, sizeof(addr_in))!=0) //把原始套接字绑定在本地主机网卡上 { printf("绑定失败:%d.\\n",WSAGetLastError()); //绑定失败时显示提示信息 return -1; } //////////////////////////设置原始套接字能够接受所有的数据 DWORD dwValue = 1; if(ioctlsocket(sock, SIO_RCVALL, &dwValue)!=0) { printf("ioctlsocket Error:%d.\\n",WSAGetLastError()); //设置失败时显示提示信息 return -1; } while(true){ int ret = recv(sock,buffer,BUFFER_MAX,0); if(ret>0){ ethhead = buffer; p = ethhead; int n = 0XFF; //链路层前6+6+2个字节为目的MAC 源MAC type // printf("MAC: %.2X:%-02X-%.02X-%.02X-%.02X-%.02X ==> %.2X-%.2X-%.2X-%.2X-%.2X-%.2X-\n",p[6]&n,p[7]&n,p[8]&n,p[9]&n,p[10]&n,p[11]&n, // p[0]&n,p[1]&n,p[2]&n,p[3]&n,p[4]&n,p[5]&n); iphead = ethhead;// + 14; p = iphead + 12; //数据包前14个字节后为20字节的第九个字节为协议,第12-16,17-20个字节为源IP,目的IP printf("IP: %d.%d.%d.%d ==> %d.%d.%d.%d\n",p[0]&0XFF,p[1]&0XFF,p[2]&0XFF,p[3]&0XFF,p[4]&0XFF,p[5]&0XFF,p[6]&0XFF,p[7]&0XFF); short length = (short)(iphead+2)[0]; printf("总长度:%d\n",length); proto = (iphead+9)[0]; p = iphead + 20; printf("Protocol:"); switch(proto){ case 1: printf("ICMP\n");break; case 2: printf("IGMP\n");break; case 4: printf("IP\n");break; case 6: printf("TCP\n");break; case 8: printf("EGP\n");break; case 9: printf("IGP\n");break; case 17: printf("UDP\n");break; case 41: printf("IPv6\n");break; case 50: printf("ESP\n");break; case 89: printf("OSPF\n");break; default: printf("不知道,协议编号是%d,请自己查文档\n",proto);break; } } cout<<endl; Sleep(200); } } ``` ```
物理机访问gns中的虚拟路由器的原理?
偶尔一次实验,要求我们在gns3上构建一个简单的拓朴图,如图1-1.![图片说明](https://img-ask.csdn.net/upload/201911/27/1574852112_700127.jpg) 我在host主机绑定了本地网卡,将路由器连接在上面,并设置了与本地连接同网段的ip地址,然后就可以通过我电脑上的浏览器去访问了。 **我的问题一是: 我假如设备路由器接口地为192.168.100.254/24,主机绑定了的本地网卡设置为192.168.100.1,然后主机就不能正常上网了,我是否能正常访问gns3中虚拟路由器R1. **问题2是:我下载了Microsoft loopback回环网卡,设置了一个ip地址,因为是在机房实验,机子设置了还原点,我不能重启电脑的情况下,我在gns上同样的拓扑图中我的host绑定了本地连接2(虚拟网卡),但是路由器却无法与改网卡连接。** **问题3:我把host换成cloud,在相同的配置下也能成功,那么host和cloud有说明区别。cloud是用来干什么的。我终端vpcs是不能绑定网卡的,因此它无法连接到物理网络。** **## 问题4:这个实验原理是什么??为什么在不能正常上网的情况下,主机不能访问路由器,我没出网应该就可以访问啊。就像我问题2提到的。 ** 问题5:我记得在vmware中有个桥接类型,是虚拟网路借助物理网卡去访问物理网络的过程叫做桥接,那这里的虚拟设备和物理主机的通信过程是不是不这个原理。 第一次提问,问题有点多,全网对gns3的连接到主机的具体原理描述,操作描述,错误解决方案很少,网络资源很分散。小新希望阅读到这个问题的朋友,或者有同样问题的朋友,一起评论和谈论。回答你们知道的问题,来一次集思广益吧!!感谢你们! 小新提示:第一次提问请csdn大佬多多关照。 小新想在收到各位的答案和思考后,再写一篇小新的博客,帮助更多的人
java 海康SDK二次开发有没有获取所有摄像头ip的函数
有个需要自己改java 海康SDK二次开发 ,做一个平台 , 本人不会C , 我在海康的开发api里面没有看到有获取所有在线摄像头ip的函数 只找到了一个类型的如下: **函数 获取所有 IP,用于支持多网卡接口 NET_DVR_GetLocalIP** 函 数: BOOL NET_DVR_GetLocalIP(char strIP[16][16], DWORD *pValidNum, BOOL *pEnableBind) 参 数: [out] strIP 存放 IP 的缓冲区,不能为空 [out] pValidNum 所有有效 IP 的数量 [out] pEnableBind 是否绑定 所有有效 IP 的数量 是否绑定 返回值: TRUE 表示成功,FALSE 表示失败。接口返回失败请调用 NET_DVR_GetLastError 获取错误码,通 过错误码判断出错原因。 说 明: 该接口获取客户端本地多网卡的所有 IP 地址,可以通过接口 NET_DVR_SetValidIP 选择要使用的 IP 地址 但是我在官方给的开发包里,没有发现这个函数 , 有没有大佬可以指教一下
配置基于ip的虚拟主机
在一块儿网卡上绑定多个ip地址的命令是什么?为何我用ifconfig enp0s25:0 222.11.22.22 up不对呢,显示no such device
笔记本连接VPN之后外网不通的问题
在搭建HADOOP集群时,集群搭建4台局域网服务器上,绑定的全是内网IP,四台服务器全部有公网IP,但是通过外网无法访问集群,所以在集群服务器上搭建了VPN服务器,方便本地连接VPN服务器操作集群。 但是连接了VPN之后出现了本地不上上外网的情况 ![图片说明](https://img-ask.csdn.net/upload/201704/13/1492069671_751771.jpg) 第一张是正常上网,的路由表,默认路由192.168.1.1就是我的路由器,出接口是192.168.1.7(笔记本无线网卡的IP) ![图片说明](https://img-ask.csdn.net/upload/201704/13/1492069681_85129.jpg) 第二张是连了VPN之后的,显示有两条默认路由,第一条还是没连接之前的192.168.1.1 第二条是由VPN建立起来的默认路由,显示是在连路上,出接口是192.168.1.7(笔记本无线网卡的IP) 第二张路由表中120.*.*.71的路由条目是VPN服务器的地址,路由条目192.168.0.100是连接VPN之后服务器给笔记本分的IP地址 此时路由表中VPN的默认路由跃点数为46,默认路由192.168.1.1跃点数为4280 所以导致所有未知路由数据全部发给VPN服务器,而VPN服务器中我没有做对外网的配置(原因是我想同时连接多个VPN),所以导致到外网的数据全部被VPN服务器丢弃,不能上外网,但是笔记本访问VPN服务器上的局域网10.0.0.0/8。 ![图片说明](https://img-ask.csdn.net/upload/201704/13/1492069690_593330.jpg) 第三张中图片中我把是由VPN建立起来的默认路由删除,保留无线网卡建立的默认路由,这时候我连VPN服务器的局域网(10.0.0.0/8)失败,原因是找不到路由, 然后手动配置一条到VPN局域网地址(10.0.0.0/8)的静态路由(出接口为VPN服务器给本机分配的IP)这个时候、VPN服务器的局域网(10.0.0.0/8)正常,但是还是不能连外网,我室友和我笔记本无线网卡在同一网段192.168.1.0/24(通过路由器)我也连不上 整个过程中VPN服务器的外网地址120.*.*.71完全可以联通,但是笔记本一直连不上外网
openstack-pike中dashboard启动实例上不了网
利用rdo的allinone方式部署了openstack-pike(只有allinone和provision-demo=n两个参数)。我的环境是双网卡,单节点,外网是admin创建的vxlan,目前登录dashboard和上网都用网卡1,网卡2绑定了br-ex。现在安全组能开的都开了,现象是host物理机和同网段机器能ping虚拟机floating ip,虚拟机能互ping虚拟机ip和floating ip,但是虚拟机无法ping到host和同网段其他机器,而且虚拟机ping不了互联网,浏览器没法上网。有什么办法吗?不知道哪里设错了?网上找了好多文章都解决不了,感觉应该没有那么麻烦,可能只是dashboard里面设错了,有没有人知道啊。
为什么在MFC中使用线程会出现程序崩溃?是我实用的方法不敌还是怎么回事?
在使用MFC中使用的线程是 API函数,调用CreateThread(); 可是使用的时候调试一步一步走都是正常的,但是一起运行就发现程序崩溃。我是一个初学的菜鸟,可能是代码有点乱,麻烦看一下!!! 谢谢各位大佬: ``` // UDPserver.cpp : 实现文件 // #include "stdafx.h" #include "ServerUDP.h" #include "UDPserver.h" #include <Winsock2.h>//加裁头文件 #include <stdio.h>//加载标准输入输出头文件 #define IDP_SOCKETS_INIT_FAILED 103 SOCKET m_revSocket; // CUDPserver CUDPserver::CUDPserver() { } CUDPserver::~CUDPserver() { } // CUDPserver 成员函数 // Server 成员函数 bool CUDPserver::Socket()//初始化 { //初始化Winscok if (!AfxSocketInit()) { AfxMessageBox(IDP_SOCKETS_INIT_FAILED); return 1; } // SetSockOpt(); WORD wVersionRequested;//版本号 WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 );//1.1版本的套接字 err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) { return false; }//加载套接字库,加裁失败则返回 if ( LOBYTE( wsaData.wVersion ) != 1 ||HIBYTE( wsaData.wVersion ) != 1 ) { WSACleanup( ); return false; }//如果不是1.1的则退出 return true; } #include"Set_up.h" CSet_up up; bool CUDPserver::GetLocalAddress(){ CString strAddress; int nCardNo = 1; //PIP_ADAPTER_INFO结构体指针存储本机网卡信息 PIP_ADAPTER_INFO pIpAdapterInfo = new IP_ADAPTER_INFO(); //得到结构体大小,用于GetAdaptersInfo参数 unsigned long stSize = sizeof(IP_ADAPTER_INFO); //调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量;其中stSize参数既是一个输入量也是一个输出量 int nRel = GetAdaptersInfo(pIpAdapterInfo,&stSize); //记录网卡数量 int netCardNum = 0; //记录每张网卡上的IP地址数量 int IPnumPerNetCard = 0; if (ERROR_BUFFER_OVERFLOW == nRel) { //如果函数返回的是ERROR_BUFFER_OVERFLOW //则说明GetAdaptersInfo参数传递的内存空间不够,同时其传出stSize,表示需要的空间大小 //这也是说明为什么stSize既是一个输入量也是一个输出量 //释放原来的内存空间 delete pIpAdapterInfo; //重新申请内存空间用来存储所有网卡信息 pIpAdapterInfo = (PIP_ADAPTER_INFO)new BYTE[stSize]; //再次调用GetAdaptersInfo函数,填充pIpAdapterInfo指针变量 nRel=GetAdaptersInfo(pIpAdapterInfo,&stSize); } if (ERROR_SUCCESS == nRel) { //输出网卡信息 //可能有多网卡,因此通过循环去判断 while (pIpAdapterInfo) { //可能网卡有多IP,因此通过循环去判断 IP_ADDR_STRING *pIpAddrString =&(pIpAdapterInfo->IpAddressList); switch(pIpAdapterInfo->Type) { case MIB_IF_TYPE_OTHER: case MIB_IF_TYPE_ETHERNET: case MIB_IF_TYPE_TOKENRING: case MIB_IF_TYPE_FDDI: case MIB_IF_TYPE_PPP: case MIB_IF_TYPE_LOOPBACK: case MIB_IF_TYPE_SLIP: { strAddress = pIpAddrString->IpAddress.String; // 需要注意的是有时可能获取的IP地址是0.0.0.0,这时需要过滤掉 if(CString("0.0.0.0")==strAddress) break; // std::cout<<_T("第")<< nCardNo<<_T("张网卡的IP地址是")<< strAddress<<std::endl; // long PID = _ttol(strAddress); //CString 转成 char*,该语句缺一不 // mxcj.m_strIP = (DWORD)PID; // 再强制转换成DWORD m_DIP= strAddress; nCardNo++; break; } default: // 未知类型网卡就跳出 break; } pIpAdapterInfo = pIpAdapterInfo->Next; } } //释放内存空间 if (pIpAdapterInfo) { delete pIpAdapterInfo; } //initsocket();//创建套接字 return true; } bool CUDPserver::initsocket() { /*创建套接字*/ //AF_INET表示IPv4,SOCK_STREAM数据传输方式,IPPROTO_TCP传输协议; m_listenSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if (m_listenSocket == INVALID_SOCKET) { //printf("套接字创建失败"); WSACleanup(); return 0; } Bind(); return true; } bool CUDPserver::Bind()// 绑定地址端口 { sockaddr_in addrListen; addrListen.sin_family = AF_INET; //指定IP格式 addrListen.sin_port = htons(m_iDKH); //绑定端口号 addrListen.sin_addr.S_un.S_addr = INADDR_ANY; //表示任何IP service.sin_addr.s_addr = inet_addr("127.0.0.1"); if (bind(m_listenSocket, (SOCKADDR*)&addrListen, sizeof(addrListen)) == SOCKET_ERROR) //(SOCKADDR*) { //printf("绑定失败"); closesocket(m_listenSocket); return 0; } Connect(); //连接开始监听 return true; } unsigned int WINAPI ThreadProFunc(void *pParam); bool CUDPserver::Connect() //连接 { /*开始监听*/ if (listen(m_listenSocket, 5) == SOCKET_ERROR) { //printf("监听出错"); closesocket(m_listenSocket); return 0; } /*等待连接,连接后建立一个新的套接字*/ //SOCKET revSocket; //对应此时所建立连接的套接字的句柄 //HANDLE hThread; // DWORD dwThreadId; //sockaddr_in remoteAddr; //接收连接到服务器上的地址信息 //int remoteAddrLen = sizeof(remoteAddr); //printf("等待连接...\n"); /*等待客户端请求,服务器接收请求*/ //m_revSocket = accept(m_listenSocket, (SOCKADDR*)&remoteAddr, &remoteAddrLen); //等待客户端接入,直到有客户端连接上来为止 /*if (m_revSocket == INVALID_SOCKET) { closesocket(m_listenSocket); WSACleanup(); return 0; } else { /* 启动等待连接线程 */ HANDLE acceptThread = CreateThread(NULL, 0, WaitAcceptThread, (LPVOID)m_listenSocket, 0, NULL); WaitForSingleObject(acceptThread, INFINITE); // 等待线程结束 // return 0; //} return true; } unsigned int WINAPI ThreadProFunc(void *pParam) { CUDPserver server; server.Receive(); char revData[255] = ""; while(1){ /*通过建立的连接进行通信*/ int res = recv(server.m_revSocket, revData, 255, 0); if (res > 0) { //printf("Bytes received: %d\n", res); // server.m_wndOutputBuild.AddString(_T("调试输出正显示在此处。")); //printf("客户端发送的数据: %s\n", revData); return 0; } //sleep(1000); return 0; } } UINT __cdecl CUDPserver::hellothread(LPVOID lparam){ CUDPserver server; server.Receive(); char revData[255] = ""; while(1){ /*通过建立的连接进行通信*/ int res = recv(server.m_revSocket, revData, 255, 0); if (res > 0) { //printf("Bytes received: %d\n", res); // server.m_wndOutputBuild.AddString(_T("调试输出正显示在此处。")); //printf("客户端发送的数据: %s\n", revData); return 0; } //sleep(1000); return 0; } } HANDLE bufferMutex; DWORD WINAPI WaitAcceptThread(LPVOID IpParameter) { SOCKET m_socket = (SOCKET)IpParameter; // int rval; sockaddr_in remoteAddr; //接收连接到服务器上的地址信息 int remoteAddrLen = sizeof(remoteAddr); while(true){ /*等待客户端请求,服务器接收请求*/ m_revSocket = accept(m_socket, (SOCKADDR*)&remoteAddr, &remoteAddrLen); //等待客户端接入,直到有客户端连接上来为止 if (m_revSocket == INVALID_SOCKET) { //printf("客户端发出请求,服务器接收请求失败:\n",WSAGetLastError()); closesocket(m_revSocket); WSACleanup(); return 0; } HANDLE receiveThread = CreateThread(NULL, 0, RecMsgThread, (LPVOID)m_revSocket, 0, NULL); WaitForSingleObject(bufferMutex, INFINITE); if(NULL == receiveThread) { //printf("\nCreatThread AnswerThread() failed.\n"); return 0; } ReleaseSemaphore(bufferMutex, 1, NULL); } } DWORD WINAPI RecMsgThread(LPVOID IpParameter) { SOCKET ClientSocket=(SOCKET)(LPVOID)IpParameter; int rval; while(1) { char recvBuf[1024]; rval = recv(ClientSocket, recvBuf, 1024, 0); WaitForSingleObject(bufferMutex, INFINITE); if (rval == SOCKET_ERROR) { // printf("ONE Client Exit\n"); // vector<SOCKET>::iterator result = find(clientSocketGroup.begin(), clientSocketGroup.end(), ClientSocket); // clientSocketGroup.erase(result); // for (map<SOCKET, string>::iterator i=m_ipSocket.begin(); i!=m_ipSocket.end(); i++) // { // if (i->first == ClientSocket) // { // printf("%s下线\n",m_ipSocket[ClientSocket].c_str()); // m_ipSocket.erase(i); // break; // } // } closesocket(ClientSocket); ReleaseSemaphore(bufferMutex, 1, NULL); break; } recvBuf; if(recvBuf[0] == -113){ if(recvBuf[0]== -1){ return 0; } } // printf("%s Says: %s\n", m_ipSocket[ClientSocket].c_str(), recvBuf); // 接收信息 Sleep(1000); ReleaseSemaphore(bufferMutex, 1, NULL); } return 0; } ```
RTSP实现双网口码流播放
1.板子上原来支持了RTSP rtsp://IP:554/h264One rtsp://IP:554/h264Two 2.现在需求添加1个网口,使得双网口都支持RTSP,是否同网段不知道,不过我推 测是不同网段才有意义 我目前的思路是在原来代码里创建一路RTSP绑定关联至新网口,添加后成如下 rtsp://IP1:554/h264One rtsp://IP1:554/h264Two rtsp://IP2:555/h264One rtsp://IP2:555/h264Two 3.不知道思路对不对,请大神给点思路或意见。 4.原来单网卡也支持Onvif,如果双网口也需要支持Onvif我的思路又是什么呢?
为什么我编的抓包程序抓的TCP包源地址都是本机地址啊,下面是源码,新手求大神指点!!
#include <iostream> #include <winsock2.h> #include <ws2tcpip.h> using namespace std; #define SIO_RCVALL _WSAIOW(IOC_VENDOR, 1) #define MAXLEN 65535 //定义IP报头 typedef struct _iph { unsigned char ver_len; unsigned char ser; unsigned short datalen; unsigned short ident; unsigned short flag; unsigned char ttl; unsigned char proto; unsigned short checksum; unsigned int sourceIP; unsigned int destIP; }iph; //定义TCP报头 typedef struct _tcph { unsigned short sourceport; unsigned short destport; unsigned int linum; unsigned int trnum; unsigned char flag; unsigned char baoliu; unsigned char ident; unsigned short win; unsigned short checksum; unsigned short jinji; }tcph; //定义ICMP报头 typedef struct _icmphdr //定义 ICMP 报头(回送与或回送响应) { unsigned char i_type;//8 位类型 unsigned char i_code; //8 位代码 unsigned short i_cksum; //16 位校验和 unsigned short i_id; //识别号(一般用进程号作为识别号) unsigned short i_seq; //报文序列号 unsigned int timestamp;//时间戳 }icmph; void main() { //加载套接字库 WSAData data; if(::WSAStartup(MAKEWORD(2,0),&data)) { cout<<"winsock库加载失败!"<<endl; return; } //创建原始套接字 SOCKET sock; sockaddr_in addr; sock=::socket(AF_INET,SOCK_RAW,IPPROTO_IP); if(INVALID_SOCKET==sock) { cout<<"sock初始化失败!"<<endl; return; } //获得本机一个IP地址 char name[30]=""; ::gethostname(name,30); hostent *h=::gethostbyname(name); ::memcpy(&addr.sin_addr.S_un.S_addr,h->h_addr_list[h->h_length-1],h->h_length); addr.sin_family=AF_INET; addr.sin_port=htons(0); //绑定地址 if(SOCKET_ERROR==::bind(sock,(SOCKADDR*)&addr,sizeof(addr))) { cout<<"sock绑定失败!!"<<endl; return; } //设置网卡为混杂模式 u_long mk=1; if(SOCKET_ERROR==::ioctlsocket(sock,SIO_RCVALL,&mk)) { cout<<"网卡的混杂模式设置失败!错误号:"<<::WSAGetLastError()<<endl; return; } cout<<"协议 源地址 目的地址 数据长度 TTL"<<endl; char buf[MAXLEN]=""; iph *iphead; tcph *tcphead=(tcph*)(buf+sizeof(iph)); icmph *icmphead=(icmph*)(buf+sizeof(iph)); int i=0; sockaddr_in add; //接收IP包 while(i<100) { if(SOCKET_ERROR==::recv(sock,buf,MAXLEN,0)) { cout<<"接收发生错误!!"<<endl; return; } iphead=(iph*)buf; if(iphead->proto==6) //TCP { add.sin_addr.S_un.S_addr=iphead->sourceIP; cout<<"TCP "<<inet_ntoa(add.sin_addr)<<':'<<ntohs(tcphead->sourceport)<<" "; add.sin_addr.S_un.S_addr=iphead->destIP; cout<<inet_ntoa(add.sin_addr)<<':'<<ntohs(tcphead->destport)<<" "<<ntohs(iphead->datalen)<<" "<<(int)iphead->ttl<<endl; } if(iphead->proto==1) //ICMP { add.sin_addr.S_un.S_addr=iphead->sourceIP; cout<<"ICMP "<<inet_ntoa(add.sin_addr)<<" "; add.sin_addr.S_un.S_addr=iphead->destIP; cout<<inet_ntoa(add.sin_addr)<<" "; char *p=buf+sizeof(iph)+sizeof(icmph)-4; cout<<p<<endl; } memset(buf,0,MAXLEN); } } ``` ```
Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used
一、控制台打印信息 "D:\Program Files\tomcat9.0.20\bin\catalina.bat" run [2019-10-26 08:59:45,240] Artifact Jia01.02:war exploded: Waiting for server connection to start artifact deployment... Using CATALINA_BASE: "C:\Users\Administrator\.IntelliJIdea2018.2\system\tomcat\Unnamed_ekp" Using CATALINA_HOME: "D:\Program Files\tomcat9.0.20" Using CATALINA_TMPDIR: "D:\Program Files\tomcat9.0.20\temp" Using JRE_HOME: "D:\Program Files\Java\jdk1.8.0_181" Using CLASSPATH: "D:\Program Files\tomcat9.0.20\bin\bootstrap.jar;D:\Program Files\tomcat9.0.20\bin\tomcat-juli.jar" Connected to the target VM, address: '127.0.0.1:65083', transport: 'socket' 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本: Apache Tomcat/9.0.20 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.构建: May 3 2019 22:26:00 UTC 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.20.0 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Windows 10 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.版本: 10.0 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 结.造: amd64 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量: D:\Program Files\Java\jdk1.8.0_181\jre 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM 版本: 1.8.0_181-b13 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.供应商: Oracle Corporation 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: C:\Users\Administrator\.IntelliJIdea2018.2\system\tomcat\Unnamed_ekp 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: D:\Program Files\tomcat9.0.20 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=C:\Users\Administrator\.IntelliJIdea2018.2\system\tomcat\Unnamed_ekp\conf\logging.properties 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:65083,suspend=y,server=n 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -javaagent:C:\Users\Administrator\.IntelliJIdea2018.2\system\captureAgent\debugger-agent.jar=file:/C:/Users/Administrator/AppData/Local/Temp/capture11347.props 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote= 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.port=1099 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.ssl=false 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.authenticate=false 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.rmi.server.hostname=127.0.0.1 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms1024m 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx3072m 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:PermSize=256M 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:MaxPermSize=512M 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmn256M 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.awt.headless=true 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Duser.timezone=Asia/Shanghai 26-Oct-2019 08:59:46.571 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.net.preferIPv4Stack=true 26-Oct-2019 08:59:46.587 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms1024m 26-Oct-2019 08:59:46.587 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx3072m 26-Oct-2019 08:59:46.587 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:PermSize=256M 26-Oct-2019 08:59:46.587 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:MaxPermSize=512M 26-Oct-2019 08:59:46.587 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmn256M 26-Oct-2019 08:59:46.587 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.awt.headless=true 26-Oct-2019 08:59:46.587 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Duser.timezone=Asia/Shanghai 26-Oct-2019 08:59:46.587 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.net.preferIPv4Stack=true 26-Oct-2019 08:59:46.587 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048 26-Oct-2019 08:59:46.587 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources 26-Oct-2019 08:59:46.587 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs= 26-Oct-2019 08:59:46.587 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=C:\Users\Administrator\.IntelliJIdea2018.2\system\tomcat\Unnamed_ekp 26-Oct-2019 08:59:46.587 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=D:\Program Files\tomcat9.0.20 26-Oct-2019 08:59:46.587 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=D:\Program Files\tomcat9.0.20\temp 26-Oct-2019 08:59:46.587 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded APR based Apache Tomcat Native library [1.2.21] using APR version [1.6.5]. 26-Oct-2019 08:59:46.587 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true]. 26-Oct-2019 08:59:46.587 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true] 26-Oct-2019 08:59:46.587 信息 [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 1.1.1a 20 Nov 2018] 26-Oct-2019 08:59:46.962 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-8080"] 26-Oct-2019 08:59:46.993 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["ajp-nio-8009"] 26-Oct-2019 08:59:46.993 信息 [main] org.apache.catalina.startup.Catalina.load 服务器在[827]毫秒内初始化 26-Oct-2019 08:59:47.056 信息 [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina] 26-Oct-2019 08:59:47.056 信息 [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/9.0.20] 26-Oct-2019 08:59:47.071 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8080"] 26-Oct-2019 08:59:47.103 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["ajp-nio-8009"] 26-Oct-2019 08:59:47.103 信息 [main] org.apache.catalina.startup.Catalina.start Server startup in [103] milliseconds Connected to server [2019-10-26 08:59:47,353] Artifact Jia01.02:war exploded: Artifact is being deployed, please wait... 26-Oct-2019 08:59:57.450 信息 [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [D:\Program Files\tomcat9.0.20\webapps\manager] 26-Oct-2019 08:59:58.502 信息 [Catalina-utility-1] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。 26-Oct-2019 08:59:58.645 信息 [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [D:\Program Files\tomcat9.0.20\webapps\manager] has finished in [1,196] ms 26-Oct-2019 09:00:18.849 信息 [RMI TCP Connection(3)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。 本地网络IP:192.168.58.1,网卡物理地址:00:50:56:c0:00:08 2019-10-26 09:00:20,447 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: com.landray.kmss.framework.plugin.loader.PluginContextLoaderListener.printHwadd(159) 获取本地网卡地址时,出现多个网卡,可能会导致正式版的license失效,建议通过JVM参数“-Djgroups.bind_addr=ip地址”,绑定本机地址 授权给:深圳市蓝凌软件股份有限公司开发演示许可 试用版:2019-11-09 Plugin Context is starting ... WebContentPath:/E:/idea_workSpace/jointsoon/20191025_ekp_v15/out/artifacts/Jia01.02.war 2019-10-26 09:01:13,491 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: net.sf.ehcache.config.ConfigurationFactory.parseConfiguration(133) No configuration found. Configuring ehcache from ehcache-failsafe.xml found in the classpath: jar:file:/E:/idea_workSpace/jointsoon/20191025_ekp_v15/out/artifacts/Jia01.02.war/WEB-INF/lib/ehcache-1.5.0.jar!/ehcache-failsafe.xml 2019-10-26 09:01:26,540 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: com.landray.kmss.sys.config.loader.KmssLookupListableBeanFactory.resolveBeanDefinition(151) Overriding bean definition for bean 'lbpmRobotNodeServiceAdapter for using @replace': replacing [bean name: lbpmRobotNodeServiceAdapter; defined in ServletContext resource [/WEB-INF/KmssConfig/sys/lbpmservice/node/robotnode/spring.xml]] with [bean name: @replace(lbpmRobotNodeServiceAdapter); defined in ServletContext resource [/WEB-INF/KmssConfig/sys/workflow/support/oa/spring.xml]] 2019-10-26 09:01:36,793 [INFO] ==== RMI TCP Connection(3)-127.0.0.1: com.alibaba.druid.pool.DruidDataSource.init(722) {dataSource-1} inited 2019-10-26 09:02:13,638 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: com.landray.kmss.sys.restservice.client.cloud.eureka.EkpCloudClientFactoryBean.getObject(78) UnusableRestClient will be created, it will throw RestClientException when invoked at any time. 2019-10-26 09:02:36,036 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: com.landray.kmss.sys.authentication.integration.KmssProcessingFilterProxy.init(126) com.landray.kmss.sys.authentication.integration.KmssAuthenticationProcessingFilter is a GenericFilterBean, cannot execute init with a null value, be sure this situation is accepted. 2019-10-26 09:02:36,233 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.security.web.access.intercept.FilterSecurityInterceptor.afterPropertiesSet(141) Could not validate configuration attributes as the SecurityMetadataSource did not return any attributes from getAllConfigAttributes() 2019-10-26 09:02:36,713 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: net.sf.ehcache.config.ConfigurationFactory.parseConfiguration(133) No configuration found. Configuring ehcache from ehcache-failsafe.xml found in the classpath: jar:file:/E:/idea_workSpace/jointsoon/20191025_ekp_v15/out/artifacts/Jia01.02.war/WEB-INF/lib/ehcache-1.5.0.jar!/ehcache-failsafe.xml 2019-10-26 09:02:36,726 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: net.sf.ehcache.CacheManager.detectAndFixDiskStorePathConflict(322) Creating a new instance of CacheManager using the diskStorePath "D:\Program Files\tomcat9.0.20\temp" which is already used by an existing CacheManager. The source of the configuration was classpath. The diskStore path for this CacheManager will be set to D:\Program Files\tomcat9.0.20\temp\ehcache_auto_created_1572051756726. To avoid this warning consider using the CacheManager factory methods to create a singleton CacheManager or specifying a separate ehcache configuration (ehcache.xml) for each CacheManager instance. 2019-10-26 09:03:02,518 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: net.sf.ehcache.config.ConfigurationFactory.parseConfiguration(133) No configuration found. Configuring ehcache from ehcache-failsafe.xml found in the classpath: jar:file:/E:/idea_workSpace/jointsoon/20191025_ekp_v15/out/artifacts/Jia01.02.war/WEB-INF/lib/ehcache-1.5.0.jar!/ehcache-failsafe.xml 2019-10-26 09:03:02,527 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: net.sf.ehcache.CacheManager.detectAndFixDiskStorePathConflict(322) Creating a new instance of CacheManager using the diskStorePath "D:\Program Files\tomcat9.0.20\temp" which is already used by an existing CacheManager. The source of the configuration was classpath. The diskStore path for this CacheManager will be set to D:\Program Files\tomcat9.0.20\temp\ehcache_auto_created_1572051782527. To avoid this warning consider using the CacheManager factory methods to create a singleton CacheManager or specifying a separate ehcache configuration (ehcache.xml) for each CacheManager instance. 2019-10-26 09:03:02,535 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: com.landray.kmss.third.ftsearch.cache.ehcache.EhCacheProvider.buildCache(94) Could not find configuration [indexSchemaCache]; using defaults. 2019-10-26 09:03:03,176 [INFO] ==== RMI TCP Connection(3)-127.0.0.1: net.paoding.analysis.knife.PaodingMaker.getProperties(138) config paoding analysis from: D:\Program Files\tomcat9.0.20\bin\file:\E:\idea_workSpace\jointsoon\20191025_ekp_v15\out\artifacts\Jia01.02.war\WEB-INF\lib\paoding-landray.jar!\paoding-analysis.properties;D:\Program Files\tomcat9.0.20\bin\file:\E:\idea_workSpace\jointsoon\20191025_ekp_v15\out\artifacts\Jia01.02.war\WEB-INF\lib\paoding-landray.jar!\paoding-analysis-default.properties;D:\Program Files\tomcat9.0.20\bin\file:\E:\idea_workSpace\jointsoon\20191025_ekp_v15\out\artifacts\Jia01.02.war\WEB-INF\lib\paoding-landray.jar!\paoding-analyzer.properties;D:\Program Files\tomcat9.0.20\bin\file:\E:\idea_workSpace\jointsoon\20191025_ekp_v15\out\artifacts\Jia01.02.war\WEB-INF\lib\paoding-landray.jar!\paoding-dic-home.properties;E:\idea_workSpace\jointsoon\20191025_ekp_v15\out\artifacts\Jia01.02.war\WEB-INF\dic\paoding-dic-names.properties;D:\Program Files\tomcat9.0.20\bin\file:\E:\idea_workSpace\jointsoon\20191025_ekp_v15\out\artifacts\Jia01.02.war\WEB-INF\lib\paoding-landray.jar!\paoding-knives.properties;D:\Program Files\tomcat9.0.20\bin\file:\E:\idea_workSpace\jointsoon\20191025_ekp_v15\out\artifacts\Jia01.02.war\WEB-INF\lib\paoding-landray.jar!\paoding-knives-user.properties 2019-10-26 09:03:03,185 [INFO] ==== RMI TCP Connection(3)-127.0.0.1: net.paoding.analysis.knife.PaodingMaker.createPaodingWithKnives(456) add knike: net.paoding.analysis.knife.CJKKnife 2019-10-26 09:03:03,190 [INFO] ==== RMI TCP Connection(3)-127.0.0.1: net.paoding.analysis.knife.PaodingMaker.createPaodingWithKnives(456) add knike: net.paoding.analysis.knife.LetterKnife 2019-10-26 09:03:03,193 [INFO] ==== RMI TCP Connection(3)-127.0.0.1: net.paoding.analysis.knife.PaodingMaker.createPaodingWithKnives(456) add knike: net.paoding.analysis.knife.NumberKnife 2019-10-26 09:03:08,969 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:09,044 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:09,124 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:09,312 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:09,409 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:09,515 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:09,615 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:09,721 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:09,925 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:10,015 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:10,104 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:10,210 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:10,315 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:10,399 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:10,529 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:10,664 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:10,753 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:10,956 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:11,045 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:11,142 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:11,252 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:11,317 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:11,377 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:11,451 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:11,559 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:11,638 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:11,724 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:11,885 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:11,976 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:12,047 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:12,128 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:12,228 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:12,298 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:12,386 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:12,467 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 2019-10-26 09:03:12,542 [WARN] ==== RMI TCP Connection(3)-127.0.0.1: org.springframework.beans.GenericTypeAwarePropertyDescriptor.getWriteMethodForActualAccess(123) Invalid JavaBean property 'forwards' being accessed! Ambiguous write methods found next to actually used [public abstract void com.landray.kmss.common.actions.IStrutsActionSupport.setForwards(java.util.Map)]: [public final void com.landray.kmss.common.actions.AbstractActionController.setForwards(java.util.Map)] 二、一直在控制台打印这个,非常影响时间,怎么解决?
socket 文件描述字传递
在函数里完成了socket的创建,绑定,连接,最后函数返回该套接字文件描述字,在另一个函数里调用该函数,并利用该socket id发送消息,在send成功发送,可是在接收对端的应用中却没有收到信息,但是在对方网卡中却能够抓取到发送的消息. 我把文件描述字的变量改为全局的就好使了, 请问各位大神解释一下这是什么情况呢 ``` //创建一个tcp socket,并完成客户端与服务器的连接过程 int createSocket() { //socket info to server //agent 设置socket 地址 struct sockaddr_in client_addr; bzero(&client_addr, sizeof(client_addr)); //设置地址结构体为0 client_addr.sin_family = AF_INET; //设置internet 协议簇 client_addr.sin_addr.s_addr = htons(INADDR_ANY);//不设置ip, 监听所用网卡 client_addr.sin_port = htons(0); //随机端口 //创建tcp套接字 int client_socket = socket(AF_INET, SOCK_STREAM, 0); if (client_socket < 0) { printf("Create Socket Failed.\n"); LOG_ERROR("Create Socket Failed."); return 0; } //绑定地址 LOG_DEBUG("to client bind port."); if (bind(client_socket, (struct sockaddr*)&client_addr, sizeof(client_addr))) { printf("Client Bind Port Failed.\n"); LOG_ERROR("Client Bind Port Failed."); return 0; } LOG_DEBUG("client bind port success."); // 服务控制台socket地址 struct sockaddr_in server_addr; bzero(&server_addr, sizeof(server_addr)); server_addr.sin_family = AF_INET; if (inet_aton(g_cfg.serverip().c_str(), &server_addr.sin_addr) == 0) //ip地址转换 { printf("Server IP address error.\n"); LOG_ERROR("Server IP address error."); return 0; } server_addr.sin_port = htons(g_cfg.serverport()); socklen_t server_addr_length = sizeof(server_addr); //服务器端建立TCP连接 LOG_DEBUG("to connect server."); if (connect(client_socket, (struct sockaddr*)&server_addr, server_addr_length) < 0) { printf("can not connect to server.\n"); LOG_ERROR("can not connect to server."); return 0; } LOG_DEBUG("connect server success."); return client_socket; } ``` 在其他函数中调用: int sock = createSocket(); if ( send(sock, sendMsg.c_str(), 1024, 0) <= 0) { printf("send error\n"); } send 成功, 对方网卡也能抓到包, 但服务器就是收不到信息, 我把client sococke改成一个全局的就好了, 这是怎么回事呀,想不明白了
网络编程Create socket failed!
要求是接收解析ICMPecho请求报文, 用命令行PraseICMP.exe log_file.txt 的形式执行。 ``` // ParsePacket.cpp : 定义控制台应用程序的入口点。 // //#define _WINSOCK_DEPRECATED_NO_WARNINGS #include <stdio.h> #include <winsock2.h> #include <ws2tcpip.h> #pragma comment(lib,"ws2_32.lib") #define _WINSOCK_DEPRECATED_NO_WARNINGS /* ICMP 首部 -- RFC 792 */ struct icmp_hdr { unsigned char type; /* 类型 */ unsigned char code; /* 代码 */ unsigned short checksum; /* 校验和 */ unsigned short id; /* 标识符 */ unsigned short seq; /* 序列号 */ /* 这之后的不是标准 ICMP 首部, 用于记录时间 */ unsigned long timestamp; }; //定义IP头部结构 typedef struct _IP_HEADER { union { BYTE Version; //版本(前4位) BYTE HdrLen; //IP头部长度(后4位) }; BYTE ServiceType; //服务类型 WORD TotalLen; //总长度 WORD ID; //标识 union { WORD Flags; //标志u(前3位) WORD FragOff; //分段偏移(后13位) }; BYTE TimeToLive; //生命期 BYTE Protocol; //协议 WORD HdrChksum; //头校验和 DWORD SrcAddr; //源地址 DWORD DstAddr; //目的地址 BYTE Options; //选项 }IP_HEADER; #define IO_RCVALL _WSAIOW(IOC_VENDOR,1) #define BUFFER_SIZE 65535 //解析IP包的头部长度 void getIHL(BYTE b, BYTE &length) { length = (b & 0x0f) * 4; } //解析ICMP类型 char* geticmptype(char type) { switch (type) { case 0: return "查询报文----应答"; case 3: return "差错报告报文----目的不可达"; case 4: return "控制报文----源抑制"; case 5: return "控制报文----路由重定向"; case 8: return "查询报文----回送请求"; case 10: return "查询报文----路由器请求"; case 11: return "差错报告报文----超时"; case 12: return "差错报告报文----参数出错"; case 13: return "查询报文----时间戳请求"; case 14: return "查询报文----时间戳应答"; case 17: return "查询报文----掩码请求"; case 18: return "查询报文----掩码应答"; case 19: return "差错报告报文----通告"; default: return "Unknown"; } } void ipparse(FILE* file, char* buffer) { int i,j; int iphead; IP_HEADER ip = *(IP_HEADER*)buffer; iphead=(ip.Version & 0x0f)<<2; icmp_hdr icmp_hd = *(icmp_hdr*)(buffer+iphead); fseek(file, 0, SEEK_END); if(ip.Protocol == 1 && icmp_hd.type==8) { printf("\n------ICMP eacho请求报文前50B------\n"); for(i=0;i<5;i++) { for(j=0;j<10;j++) { printf("%x%x ",(unsigned char)buffer[10*i+j]>>4,buffer[10*i+j]&0x0f); } printf("\n"); } fprintf(file, "------解析ICMP eacho请求报文------\n"); //解析IP包的源IP地址 fprintf(file, "SrcAddr: %s\n", inet_ntoa(*(in_addr*)&ip.SrcAddr)); //解析IP包的目的IP地址 fprintf(file, "DstAdrr: %s\n", inet_ntoa(*(in_addr*)&ip.DstAddr)); //解析ICMP类型 fprintf(file, "Type: %s\n",geticmptype(icmp_hd.type)); //解析ICMP代码 fprintf(file, "Code: %d\n",icmp_hd.code); //解析ICMP校验和 fprintf(file, "Sum: 0x%x\n",ntohs((unsigned int)icmp_hd.checksum)); //解析ICMP标识符 fprintf(file, "ID: %d\n",ntohs(icmp_hd.id)); //解析ICMP序列号 fprintf(file, "Seq: %d\n",ntohs(icmp_hd.seq)); } } int main(int argc, char* argv[]) { //检查输入的命令格式 if (argc != 2) { printf("Please input command:ParseICMP.exe log_file.txt\n"); return 0; } //打开输出日志文件 FILE* file; if ((file = fopen(argv[1], "wb+")) == NULL) { printf("Fail to open file %s!", argv[1]); return 0; } //初始化Socket环境 WSADATA wsData; if (WSAStartup(MAKEWORD(2, 2), &wsData) != 0) { printf("WSAStartup failed!"); return 0; } //建立原始Socket SOCKET sock; if ((sock = socket(AF_INET, SOCK_RAW, IPPROTO_IP)) == INVALID_SOCKET) { printf("Create socket failed!"); return 0; } //设置IP头部操作选项,flag设置为ture BOOL flag = true; if (setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (char*)&flag, sizeof(flag)) == SOCKET_ERROR) { printf("Setsockopt failed!"); return 0; } //获取本地主机名 char hostName[128]; if (gethostname(hostName, 100) == SOCKET_ERROR) { printf("Gethostbyname failed!"); return 0; } //获取本地主机IP地址 hostent* pHostIP; if ((pHostIP = gethostbyname(hostName)) == NULL) { printf("Gethostbyname failed!"); return 0; } //填充SOCKADDR_IN结构 sockaddr_in addr_in, cliadd; addr_in.sin_addr = *(in_addr*)pHostIP->h_addr_list[0]; addr_in.sin_family = AF_INET; addr_in.sin_port = htons(5050); //把原始Socket绑定到本地网卡 if (bind(sock, (PSOCKADDR)&addr_in, sizeof(addr_in)) == SOCKET_ERROR) { printf("Bind failed!"); return 0; } int ilen = sizeof(cliadd); //设置SOCK_RAW为SIO_RCVALL,接收所有数据包 DWORD dwValue = 1; DWORD dwBufferLen[10]; DWORD dwBufferInLen = 1; DWORD dwBytesReturned = 0; if (WSAIoctl(sock, IO_RCVALL, &dwBufferInLen, sizeof(dwBufferInLen), &dwBufferLen, sizeof(dwBufferLen), &dwBytesReturned, NULL, NULL) == SOCKET_ERROR) { printf("Ioctlsocket failed!"); return 0; } //监听经过本机的IP包 char buffer[BUFFER_SIZE]; printf("Listening on local host...\n"); while (true) { // int size = recv(sock, buffer, BUFFER_SIZE, 0); int size = recvfrom(sock, buffer, BUFFER_SIZE, 0 , (struct sockaddr*)&cliadd, &ilen); if (size > 0) { ipparse(stdout, buffer); //ipparse(file, buffer); } } fclose(file); return 0; } ```
新人求教,我用mfc做了一个tcp fin的端口扫描器,死后得不出结果,求大神帮忙找出问题
cpp文件 // scanDlg.cpp : implementation file // #include "stdafx.h" #include "scan.h" #include "scanDlg.h" #include "afxdialogex.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // CAboutDlg dialog used for App About class CAboutDlg : public CDialogEx { public: CAboutDlg(); // Dialog Data enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support // Implementation protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP() // CscanDlg dialog CscanDlg::CscanDlg(CWnd* pParent /*=NULL*/) : CDialogEx(CscanDlg::IDD, pParent) , m_star_port(_T("")) , m_end_port(_T("")) , m_IP(_T("")) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CscanDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_LIST1, m_list); DDX_Text(pDX, IDC_EDIT2, m_star_port); DDX_Text(pDX, IDC_EDIT3, m_end_port); DDX_Text(pDX, IDC_EDIT1, m_IP); } BEGIN_MESSAGE_MAP(CscanDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON1, &CscanDlg::OnBnClickedButton1) END_MESSAGE_MAP() // CscanDlg message handlers BOOL CscanDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here return TRUE; // return TRUE unless you set the focus to a control } hostent* CscanDlg::g_pHost = 0; SOCKET CscanDlg::sock = 0; void CscanDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialogEx::OnSysCommand(nID, lParam); } } // If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework. void CscanDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // device context for painting SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CDialogEx::OnPaint(); } } // The system calls this function to obtain the cursor to display while the user drags // the minimized window. HCURSOR CscanDlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); } void CscanDlg::OnBnClickedButton1() { // TODO: Add your control notification handler code here send_revc((LPSTR)(LPCTSTR)m_IP,(LPSTR)(LPCTSTR)m_star_port,(LPSTR)(LPCTSTR)m_end_port,&m_list);//char ch1[],char tr1[],char tr2[] } void CscanDlg ::send_revc(char ch1[],char tr1[],char tr2[],CListBox* m_list) { WSADATA WSAData; WSAStartup(MAKEWORD(2,2), &WSAData); sock=WSASocket(AF_INET,SOCK_RAW,IPPROTO_RAW,NULL,0,WSA_FLAG_OVERLAPPED);//定义套接字 BOOL flag = true; setsockopt(sock,IPPROTO_IP, IP_HDRINCL,(char *)&flag,sizeof(flag)); char sLocalName[64]; gethostname((char*)sLocalName, sizeof(sLocalName)-1); g_pHost = gethostbyname(sLocalName); sockaddr_in addr_local; addr_local.sin_addr = *(in_addr *)g_pHost->h_addr_list[0]; //绑定到本地网卡,INADDR_ANY不行 addr_local.sin_family = AF_INET;// addr_local.sin_port = htons(SOURCE_PORT); bind(sock, (PSOCKADDR)&addr_local, sizeof(sockaddr_in));//绑套接字 DWORD dwValue = 1; SADDR sAddr; USHORT int1,int2; sAddr.m_destip=ch1; sAddr.m_starpost=atoi(tr1); sAddr.m_endpost=atoi(tr2); ioctlsocket(sock, SIO_RCVALL, &dwValue); int nTimeOut = 500;//设置超时 setsockopt(sock,SOL_SOCKET, SO_SNDTIMEO, (char*)&nTimeOut, sizeof(nTimeOut)); HANDLE threads[2];//开双线程 threads[0] = CreateThread(NULL, 0,(LPTHREAD_START_ROUTINE)revcfunc,(LPVOID)m_list,0,NULL); threads[1] = CreateThread(NULL, 0,(LPTHREAD_START_ROUTINE)sendfunc,(LPVOID)(&sAddr), 0,NULL); WaitForMultipleObjects(2,threads,FALSE,INFINITE); } USHORT CscanDlg ::checksumfunc(USHORT *buffer, int size)//检验和函数 { unsigned long cksum=0; while(size >1) { cksum+=*buffer++; size -=sizeof(USHORT); } if(size) { cksum += *(UCHAR*)buffer; } cksum = (cksum >> 16) + (cksum & 0xffff); cksum += (cksum >>16); return (USHORT)(~cksum); } void CscanDlg ::sendfunc(SADDR* sAddr ) { IP_HEADER ipHeader; TCP_HEADER tcpHeader; PSD_HEADER psdHeader; char Sendto_Buff[MAX_BUFF_LEN]; //发送缓冲区 unsigned short check_Buff[MAX_BUFF_LEN]; //检验和缓冲区 const char tcp_send_data[]={"This is my homework of networt,I am happy!"}; BOOL flag; int rect,nTimeOver; //先试一下在外面弄好套接字初始化行不行 flag=true; nTimeOver=1000; //填充IP首部 ipHeader.h_verlen=(IPVER<<4 | sizeof(ipHeader)/sizeof(unsigned long)); ipHeader.tos=(UCHAR)0; ipHeader.total_len=htons((unsigned short)sizeof(ipHeader)+sizeof(tcpHeader)+sizeof(tcp_send_data)); ipHeader.ident=0; //16位标识 ipHeader.frag_and_flags=0; //3位标志位 ipHeader.ttl=128; //8位生存时间 ipHeader.proto=IPPROTO_UDP; //协议类型 ipHeader.checksum=0; //检验和暂时为0 ipHeader.sourceIP=*(int*)g_pHost->h_addr_list[0]; //32位源IP地址可以直接获取 ipHeader.destIP=inet_addr(sAddr->m_destip); //32位目的IP地址 //计算IP头部检验和 memset(check_Buff,0,MAX_BUFF_LEN); memcpy(check_Buff,&ipHeader,sizeof(IP_HEADER)); ipHeader.checksum=checksumfunc(check_Buff,sizeof(IP_HEADER)); //构造TCP伪首部 psdHeader.saddr=ipHeader.sourceIP; psdHeader.daddr=ipHeader.destIP; psdHeader.mbz=0; psdHeader.ptcl=ipHeader.proto; psdHeader.tcpl=htons(sizeof(TCP_HEADER)+sizeof(tcp_send_data)); for(int i=sAddr->m_starpost;i<sAddr->m_endpost;i++) //填充TCP首部 { tcpHeader.th_dport=htons(i); //16位目的端口号 tcpHeader.th_sport=htons(SOURCE_PORT); //16位源端口号 tcpHeader.th_seq=0; //SYN序列号 tcpHeader.th_ack=0; //ACK序列号置为0 //TCP长度和保留位 tcpHeader.th_lenres=(sizeof(tcpHeader)/sizeof(unsigned long)<<4|0); tcpHeader.th_flag=1; //修改这里来实现不同的标志位探测,2是SYN,1是//FIN,16是ACK探测 等等 tcpHeader.th_win=htons((unsigned short)16384); //窗口大小 tcpHeader.th_urp=0; //偏移大小 tcpHeader.th_sum=0; //检验和暂时填为0 //计算TCP校验和 memset(check_Buff,0,MAX_BUFF_LEN); memcpy(check_Buff,&psdHeader,sizeof(psdHeader)); memcpy(check_Buff+sizeof(psdHeader),&tcpHeader,sizeof(tcpHeader)); memcpy(check_Buff+sizeof(PSD_HEADER)+sizeof(TCP_HEADER), tcp_send_data,sizeof(tcp_send_data)); tcpHeader.th_sum=checksumfunc(check_Buff,sizeof(PSD_HEADER)+ sizeof(TCP_HEADER)+sizeof(tcp_send_data)); //填充发送缓冲区 memset(Sendto_Buff,0,MAX_BUFF_LEN); memcpy(Sendto_Buff,&ipHeader,sizeof(IP_HEADER)); memcpy(Sendto_Buff+sizeof(IP_HEADER),&tcpHeader, sizeof(TCP_HEADER)); memcpy(Sendto_Buff+sizeof(IP_HEADER)+sizeof(TCP_HEADER), tcp_send_data,sizeof(tcp_send_data)); int datasize=sizeof(IP_HEADER)+sizeof(TCP_HEADER)+ sizeof(tcp_send_data); //发送数据报的目的地址 SOCKADDR_IN dest; memset(&dest,0,sizeof(dest)); dest.sin_family=AF_INET; dest.sin_addr.s_addr=inet_addr(sAddr->m_destip); dest.sin_port=htons(i); rect=sendto(sock,Sendto_Buff,datasize, 0,(struct sockaddr*)&dest, sizeof(dest)); } } void CscanDlg ::revcfunc(CListBox* m_list) { CString str; char RecvBuf[MAX_BUFF_LEN]; IP_HEADER* ip; TCP_HEADER* tcp; while(1) { int ret = recv(sock, RecvBuf, MAX_BUFF_LEN, 0); if (ret > 0) { ip = (IP_HEADER*)RecvBuf; tcp = (TCP_HEADER*)(RecvBuf + (ip->h_verlen&0x0f)*4); str.Format(_T("%hu"), tcp->th_sport); m_list->AddString(str); } else str.Format(_T("%d"),ret),m_list->AddString(str); } } 头文件// scanDlg.h : header file // #pragma once #include<winsock2.h> #include<ws2tcpip.h> #include<stdio.h> #pragma comment(lib,"ws2_32.lib") //#define SIO_RCVALL_WSAIOW(IOC_VENDOR,1) #include <stdlib.h> #include <windows.h> #include <time.h> #include "afxwin.h" #define IPVER 4 //IP协议预定 #define MAX_BUFF_LEN 65500 //发送缓冲区最大值 #define SIO_RCVALL _WSAIOW(IOC_VENDOR,1) #define SOURCE_PORT 8088 //local TCP segment source port // CscanDlg dialog class CscanDlg : public CDialogEx { // Construction public: CscanDlg(CWnd* pParent = NULL); // standard constructor // Dialog Data enum { IDD = IDD_SCAN_DIALOG }; typedef struct ip_hdr //定义IP首部 { UCHAR h_verlen; //4位首部长度,4位IP版本号 UCHAR tos; //8位服务类型TOS USHORT total_len; //16位总长度(字节) USHORT ident; //16位标识 USHORT frag_and_flags; //3位标志位 UCHAR ttl; //8位生存时间 TTL UCHAR proto; //8位协议 (TCP, UDP 或其他) USHORT checksum; //16位IP首部校验和 ULONG sourceIP; //32位源IP地址 ULONG destIP; //32位目的IP地址 }IP_HEADER; typedef struct tsd_hdr //定义TCP伪首部 { ULONG saddr; //源地址 ULONG daddr; //目的地址 UCHAR mbz; //没用 UCHAR ptcl; //协议类型 USHORT tcpl; //TCP长度 }PSD_HEADER; typedef struct tcp_hdr //定义TCP首部 { USHORT th_sport; //16位源端口 USHORT th_dport; //16位目的端口 ULONG th_seq; //32位序列号 ULONG th_ack; //32位确认号 UCHAR th_lenres; //4位首部长度/6位保留字 UCHAR th_flag; //6位标志位 USHORT th_win; //16位窗口大小 USHORT th_sum; //16位校验和 USHORT th_urp; //16位紧急数据偏移量 }TCP_HEADER; typedef struct SADDR //定义TCP首部 { char* m_destip; USHORT m_starpost; USHORT m_endpost; }; USHORT static checksumfunc(USHORT *buffer, int size); void static sendfunc(SADDR* sAddr); void static revcfunc(CListBox* m_list); void send_revc(char ch1[],char tr1[],char tr2[],CListBox* m_list); SOCKET static sock; //用于收发TCP报文段的全局socket hostent static *g_pHost; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support // Implementation protected: HICON m_hIcon; // Generated message map functions virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP() public: CListBox m_list; afx_msg void OnBnClickedButton1(); CString m_star_port; CString m_end_port; CString m_IP; };
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、PDF搜索网站推荐 对于大部
linux系列之常用运维命令整理笔录
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢慢积累一些其它拓展的命令,博客不定时更新 顺便拉下票,我在参加csdn博客之星竞选,欢迎投票支持,每个QQ或者微信每天都可以投5票,扫二维码即可,http://m234140.nofollow.ax.
Vue + Spring Boot 项目实战(十四):用户认证方案与完善的访问拦截
本篇文章主要讲解 token、session 等用户认证方案的区别并分析常见误区,以及如何通过前后端的配合实现完善的访问拦截,为下一步权限控制的实现打下基础。
比特币原理详解
一、什么是比特币 比特币是一种电子货币,是一种基于密码学的货币,在2008年11月1日由中本聪发表比特币白皮书,文中提出了一种去中心化的电子记账系统,我们平时的电子现金是银行来记账,因为银行的背后是国家信用。去中心化电子记账系统是参与者共同记账。比特币可以防止主权危机、信用风险。其好处不多做赘述,这一层面介绍的文章很多,本文主要从更深层的技术原理角度进行介绍。 二、问题引入  假设现有4个人
程序员接私活怎样防止做完了不给钱?
首先跟大家说明一点,我们做 IT 类的外包开发,是非标品开发,所以很有可能在开发过程中会有这样那样的需求修改,而这种需求修改很容易造成扯皮,进而影响到费用支付,甚至出现做完了项目收不到钱的情况。 那么,怎么保证自己的薪酬安全呢? 我们在开工前,一定要做好一些证据方面的准备(也就是“讨薪”的理论依据),这其中最重要的就是需求文档和验收标准。一定要让需求方提供这两个文档资料作为开发的基础。之后开发
网页实现一个简单的音乐播放器(大佬别看。(⊙﹏⊙))
今天闲着无事,就想写点东西。然后听了下歌,就打算写个播放器。 于是乎用h5 audio的加上js简单的播放器完工了。 欢迎 改进 留言。 演示地点跳到演示地点 html代码如下`&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;music&lt;/title&gt; &lt;meta charset="utf-8"&gt
Python十大装B语法
Python 是一种代表简单思想的语言,其语法相对简单,很容易上手。不过,如果就此小视 Python 语法的精妙和深邃,那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点,并附上详细的实例代码。如能在实战中融会贯通、灵活使用,必将使代码更为精炼、高效,同时也会极大提升代码B格,使之看上去更老练,读起来更优雅。 1. for - else 什么?不是 if 和 else 才
数据库优化 - SQL优化
前面一篇文章从实例的角度进行数据库优化,通过配置一些参数让数据库性能达到最优。但是一些“不好”的SQL也会导致数据库查询变慢,影响业务流程。本文从SQL角度进行数据库优化,提升SQL运行效率。 判断问题SQL 判断SQL是否有问题时可以通过两个表象进行判断: 系统级别表象 CPU消耗严重 IO等待严重 页面响应时间过长
2019年11月中国大陆编程语言排行榜
2019年11月2日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,并统计如下: 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7
通俗易懂地给女朋友讲:线程池的内部原理
餐厅的约会 餐盘在灯光的照耀下格外晶莹洁白,女朋友拿起红酒杯轻轻地抿了一小口,对我说:“经常听你说线程池,到底线程池到底是个什么原理?”我楞了一下,心里想女朋友今天是怎么了,怎么突然问出这么专业的问题,但做为一个专业人士在女朋友面前也不能露怯啊,想了一下便说:“我先给你讲讲我前同事老王的故事吧!” 大龄程序员老王 老王是一个已经北漂十多年的程序员,岁数大了,加班加不动了,升迁也无望,于是拿着手里
经典算法(5)杨辉三角
写在前面: 我是 扬帆向海,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活。 目录一、杨辉三角的介绍二、杨辉三角的算法思想三、代码实现1.第一种写法2.第二种写法 一、杨辉三角的介绍 百度
腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹?
昨天,有网友私信我,说去阿里面试,彻底的被打击到了。问了为什么网上大量使用ThreadLocal的源码都会加上private static?他被难住了,因为他从来都没有考虑过这个问题。无独有偶,今天笔者又发现有网友吐槽了一道腾讯的面试题,我们一起来看看。 腾讯算法面试题:64匹马8个跑道需要多少轮才能选出最快的四匹? 在互联网职场论坛,一名程序员发帖求助到。二面腾讯,其中一个算法题:64匹
面试官:你连RESTful都不知道我怎么敢要你?
面试官:了解RESTful吗? 我:听说过。 面试官:那什么是RESTful? 我:就是用起来很规范,挺好的 面试官:是RESTful挺好的,还是自我感觉挺好的 我:都挺好的。 面试官:… 把门关上。 我:… 要干嘛?先关上再说。 面试官:我说出去把门关上。 我:what ?,夺门而去 文章目录01 前言02 RESTful的来源03 RESTful6大原则1. C-S架构2. 无状态3.统一的接
SQL-小白最佳入门sql查询一
一 说明 如果是初学者,建议去网上寻找安装Mysql的文章安装,以及使用navicat连接数据库,以后的示例基本是使用mysql数据库管理系统; 二 准备前提 需要建立一张学生表,列分别是id,名称,年龄,学生信息;本示例中文章篇幅原因SQL注释略; 建表语句: CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `
项目中的if else太多了,该怎么重构?
介绍 最近跟着公司的大佬开发了一款IM系统,类似QQ和微信哈,就是聊天软件。我们有一部分业务逻辑是这样的 if (msgType = "文本") { // dosomething } else if(msgType = "图片") { // doshomething } else if(msgType = "视频") { // doshomething } else { // dosho
漫话:什么是平衡(AVL)树?这应该是把AVL树讲的最好的文章了
这篇文章通过对话的形式,由浅入深带你读懂 AVL 树,看完让你保证理解 AVL 树的各种操作,如果觉得不错,别吝啬你的赞哦。 1、若它的左子树不为空,则左子树上所有的节点值都小于它的根节点值。 2、若它的右子树不为空,则右子树上所有的节点值均大于它的根节点值。 3、它的左右子树也分别可以充当为二叉查找树。 例如: 例如,我现在想要查找数值为14的节点。由于二叉查找树的特性,我们可...
“狗屁不通文章生成器”登顶GitHub热榜,分分钟写出万字形式主义大作
一、垃圾文字生成器介绍 最近在浏览GitHub的时候,发现了这样一个骨骼清奇的雷人项目,而且热度还特别高。 项目中文名:狗屁不通文章生成器 项目英文名:BullshitGenerator 根据作者的介绍,他是偶尔需要一些中文文字用于GUI开发时测试文本渲染,因此开发了这个废话生成器。但由于生成的废话实在是太过富于哲理,所以最近已经被小伙伴们给玩坏了。 他的文风可能是这样的: 你发现,
程序员:我终于知道post和get的区别
IT界知名的程序员曾说:对于那些月薪三万以下,自称IT工程师的码农们,其实我们从来没有把他们归为我们IT工程师的队伍。他们虽然总是以IT工程师自居,但只是他们一厢情愿罢了。 此话一出,不知激起了多少(码农)程序员的愤怒,却又无可奈何,于是码农问程序员。 码农:你知道get和post请求到底有什么区别? 程序员:你看这篇就知道了。 码农:你月薪三万了? 程序员:嗯。 码农:你是怎么做到的? 程序员:
《程序人生》系列-这个程序员只用了20行代码就拿了冠军
你知道的越多,你不知道的越多 点赞再看,养成习惯GitHub上已经开源https://github.com/JavaFamily,有一线大厂面试点脑图,欢迎Star和完善 前言 这一期不算《吊打面试官》系列的,所有没前言我直接开始。 絮叨 本来应该是没有这期的,看过我上期的小伙伴应该是知道的嘛,双十一比较忙嘛,要值班又要去帮忙拍摄年会的视频素材,还得搞个程序员一天的Vlog,还要写BU
开源并不是你认为的那些事
点击上方蓝字 关注我们开源之道导读所以 ————想要理清开源是什么?先要厘清开源不是什么,名正言顺是句中国的古代成语,概念本身的理解非常之重要。大部分生物多样性的起源,...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
      11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1
程序员把地府后台管理系统做出来了,还有3.0版本!12月7号最新消息:已在开发中有github地址
第一幕:缘起 听说阎王爷要做个生死簿后台管理系统,我们派去了一个程序员…… 996程序员做的梦: 第一场:团队招募 为了应对地府管理危机,阎王打算找“人”开发一套地府后台管理系统,于是就在地府总经办群中发了项目需求。 话说还是中国电信的信号好,地府都是满格,哈哈!!! 经常会有外行朋友问:看某网站做的不错,功能也简单,你帮忙做一下? 而这次,面对这样的需求,这个程序员
网易云6亿用户音乐推荐算法
网易云音乐是音乐爱好者的集聚地,云音乐推荐系统致力于通过 AI 算法的落地,实现用户千人千面的个性化推荐,为用户带来不一样的听歌体验。 本次分享重点介绍 AI 算法在音乐推荐中的应用实践,以及在算法落地过程中遇到的挑战和解决方案。 将从如下两个部分展开: AI 算法在音乐推荐中的应用 音乐场景下的 AI 思考 从 2013 年 4 月正式上线至今,网易云音乐平台持续提供着:乐屏社区、UGC
【技巧总结】位运算装逼指南
位算法的效率有多快我就不说,不信你可以去用 10 亿个数据模拟一下,今天给大家讲一讲位运算的一些经典例子。不过,最重要的不是看懂了这些例子就好,而是要在以后多去运用位运算这些技巧,当然,采用位运算,也是可以装逼的,不信,你往下看。我会从最简单的讲起,一道比一道难度递增,不过居然是讲技巧,那么也不会太难,相信你分分钟看懂。 判断奇偶数 判断一个数是基于还是偶数,相信很多人都做过,一般的做法的代码如下
《C++ Primer》学习笔记(六):C++模块设计——函数
专栏C++学习笔记 《C++ Primer》学习笔记/习题答案 总目录 https://blog.csdn.net/TeFuirnever/article/details/100700212 —————————————————————————————————————————————————————— 《C++ Primer》习题参考答案:第6章 - C++模块设计——函数 文章目录专栏C+...
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
面试官如何考察你的思维方式?
1.两种思维方式在求职面试中,经常会考察这种问题:北京有多少量特斯拉汽车? 某胡同口的煎饼摊一年能卖出多少个煎饼? 深圳有多少个产品经理? 一辆公交车里能装下多少个乒乓球? 一
so easy! 10行代码写个"狗屁不通"文章生成器
前几天,GitHub 有个开源项目特别火,只要输入标题就可以生成一篇长长的文章。背后实现代码一定很复杂吧,里面一定有很多高深莫测的机器学习等复杂算法不过,当我看了源代码之后这程序不到50
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的 回答 - Bravo Yeung,获得该问题下回答中得最高赞(236赞和1枚专业勋章),对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalk
相关热词 c# 输入ip c# 乱码 报表 c#选择结构应用基本算法 c# 收到udp包后回包 c#oracle 头文件 c# 序列化对象 自定义 c# tcp 心跳 c# ice连接服务端 c# md5 解密 c# 文字导航控件
立即提问