1.�˿�����Դ��
2.ä¸ä¸ªç³»ç»ç«¯å£ç®¡ç软件çå¶ä½
3.C++ä¸å¦ä½å®ç°ç«¯å£çè§
4.易语言 发送封包 的端口端口源码怎么写?
�˿�����Դ��
使用 CodeWave 的用户如需导出源码在本地启动测试,可以参考以下步骤。拦截拦截
环境准备:若要在本地编译执行,源码源码用户本机需具备以下环境:1. JDK1.8;2. Maven;3. IDEA(可选)。端口端口
如何导出源码?在 IDE 页面,拦截拦截点击右上角“更多”,源码源码浏览器查看源码代码选择“导出和部署”,端口端口然后点击“导出应用”,拦截拦截选择“源码”,源码源码“后端代码+前端静态文件”,端口端口其他默认即可。拦截拦截
源码导出成功后会自动下载,源码源码通过浏览器下载记录可以查看。端口端口
源码结构:提取下载的拦截拦截源码压缩文件,得到一个 Maven 项目结构,源码源码如需了解详细的源码结构,请前往文档中心查看。微有源码
安装依赖:项目依赖分为公共依赖和二方依赖,公共依赖通过阿里云镜像仓库安装,二方依赖通过脚本自动安装。
公共依赖的安装方法如下:在项目根目录下打开命令行窗口,执行命令 mvn dependency:resolve -Dmaven.repo.local=./repository -s ./settings.xml。
二方依赖的安装方法如下:在 dependency 目录中会看到有两个脚本,install-dependency.bat 和 install-dependency.sh,分别适用于 windows 和 linux/mac 用户。缓存转换源码
执行 sql:在源码 src/main/resources/db 目录下,如果存在 sql 文件,则需要在数据库中执行。
修改配置:如要本地运行项目,需要修改一些配置文件,如导出开发环境为 src/main/resources/application-dev.yml,导出生产环境为 src/main/resources/application-online.yml,需要修改的海鸥源码网配置项包括数据库地址、数据库用户、数据库密码、应用启动端口、应用文件存储类型等。
编译源码:在源码根目录下打开命令行窗口,执行命令 mvn clean package -Dmaven.repo.local=./repository -s ./settings.xml。
运行项目:执行命令 java -jar target\xxx.jar,启动成功后,抄底区间源码浏览器访问 localhost: 即可访问。
对于有开发经验的同学,可以借助 IDEA 把项目运行起来,在 IDEA 加载源码后,打开 com.community1.nostest.Application,点击 debug。
ä¸ä¸ªç³»ç»ç«¯å£ç®¡ç软件çå¶ä½
æ¯å¦è¯´ä½ ççµèæ¯ä¸å°æå¡å¨ï¼æå¡å¨éè¦æMail ServeråWEBæå¡ï¼è¿è¦æFTPæå¡ï¼è¿äºåªéè¦å¼æ¾ããã就足å¤äºãå ¶å®çå°±åºè¯¥å ¨é¨å ³éã
å ³éçæ¹æ³ï¼ç¹å»âå¼å§âæ§å¶é¢æ¿âç½ç»è¿æ¥âæ¬å°è¿æ¥âå³é®âå±æ§âï¼ç¶åéæ©âInternet(tcp/ip)âââå±æ§âï¼ãå¨âInternet(tcp/ip)å±æ§â对è¯æ¡ä¸éæ©âé«çº§âé项å¡ãå¨âé«çº§TCP/IP设置â对è¯æ¡ä¸ç¹éâé项âââTCP/IPçéâââå±æ§âï¼ãå¨è¿éå为3项ï¼åå«æ¯TCPãUDPãIPåè®®ãå设æçç³»ç»åªæ³å¼æ¾ãããè¿4个端å£ï¼åªè¦å¨âTCP端å£âä¸å¾éâåªå 许âç¶åç¹å»âæ·»å âä¾æ¬¡æè¿äºç«¯å£æ·»å å°éé¢ï¼ç¶åç¡®å®ã注æï¼ä¿®æ¹å®ä»¥åç³»ç»ä¼æ示éæ°å¯å¨ï¼è¿æ ·è®¾ç½®æä¼çæãè¿æ ·ï¼ç³»ç»éæ°å¯å¨ä»¥ååªä¼å¼æ¾åæä½ æéçé£äºç«¯å£ ï¼å ¶å®ç«¯å£é½ä¸ä¼å¼æ¾ã
ä¸ç¨è½¯ä»¶ï¼ç³»ç»èªå¸¦
C++ä¸å¦ä½å®ç°ç«¯å£çè§
ççæ没æç¨
==============
#include "stdafx.h"
#include <winsock2.h>
#include <windows.h>
//#include <stdio.h>
#include <stdlib.h>
#include <fstream.h>
DWORD WINAPI ClientThread(LPVOID lpParam);
int main(int argc, char* argv[])
{
if (argc!=2)
{
printf("using: listen [your ip address]\nfor example:\n listen ...2\n");
return 0;
}
WORD wVersionRequested;
DWORD ret;
WSADATA wsaData;
BOOL val;
SOCKADDR_IN saddr;
SOCKADDR_IN scaddr;
int err;
SOCKET s;
SOCKET sc;
int caddsize;
HANDLE mt;
DWORD tid;
wVersionRequested = MAKEWORD( 2, 2 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 ) {
printf("error!WSAStartup failed!\n");
return -1;
}
saddr.sin_family = AF_INET;
//æªå¬è½ç¶ä¹å¯ä»¥å°å°åæå®ä¸ºINADDR_ANYï¼ä½æ¯è¦ä¸è½å½±åæ£å¸¸åºç¨æ åµä¸ï¼åºè¯¥æå®å ·ä½çIPï¼çä¸.0.0.1ç»æ£å¸¸çæå¡åºç¨ï¼ç¶åå©ç¨è¿ä¸ªå°åè¿è¡è½¬åï¼å°±å¯ä»¥ä¸å½±å对æ¹æ£å¸¸åºç¨äº
saddr.sin_addr.s_addr = inet_addr(argv[1]);
saddr.sin_port = htons();
if((s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==SOCKET_ERROR)
{
printf("error!socket failed!\n");
return -1;
}
val = TRUE;
//SO_REUSEADDRé项就æ¯å¯ä»¥å®ç°ç«¯å£éç»å®ç
if(setsockopt(s,SOL_SOCKET,SO_REUSEADDR,(char *)&val,sizeof(val))!=0)
{
printf("error!setsockopt failed!\n");
return -1;
}
//å¦ææå®äºSO_EXCLUSIVEADDRUSEï¼å°±ä¸ä¼ç»å®æåï¼è¿åæ æéçé误代ç ï¼
//å¦ææ¯æ³éè¿éå©ç¨ç«¯å£è¾¾å°éèçç®çï¼å°±å¯ä»¥å¨æçæµè¯å½åå·²ç»å®ç端å£åªä¸ªå¯ä»¥æåï¼å°±è¯´æå ·å¤è¿ä¸ªæ¼æ´ï¼ç¶åå¨æå©ç¨ç«¯å£ä½¿å¾æ´éè½
//å ¶å®UDP端å£ä¸æ ·å¯ä»¥è¿æ ·éç»å®å©ç¨ï¼è¿å¿ä¸»è¦æ¯ä»¥TELNETæå¡ä¸ºä¾åè¿è¡æ»å»
if(bind(s,(SOCKADDR *)&saddr,sizeof(saddr))==SOCKET_ERROR)
{
ret=GetLastError();
printf("error!bind failed!\n");
return -1;
}
listen(s,2);
while(1)
{
caddsize = sizeof(scaddr);
//æ¥åè¿æ¥è¯·æ±
sc = accept(s,(struct sockaddr *)&scaddr,&caddsize);
if(sc!=INVALID_SOCKET)
{
mt = CreateThread(NULL,0,ClientThread,(LPVOID)sc,0,&tid);
if(mt==NULL)
{
printf("Thread Creat Failed!\n");
break;
}
}
CloseHandle(mt);
}
closesocket(s);
WSACleanup();
return 0;
}
DWORD WINAPI ClientThread(LPVOID lpParam)
{
SOCKET ss = (SOCKET)lpParam;
SOCKET sc;
char buf[];
SOCKADDR_IN saddr;
long num;
DWORD val;
DWORD ret;
//å¦ææ¯éè端å£åºç¨çè¯ï¼å¯ä»¥å¨æ¤å¤å ä¸äºå¤æ
//å¦ææ¯èªå·±çå ï¼å°±å¯ä»¥è¿è¡ä¸äºç¹æ®å¤çï¼ä¸æ¯çè¯éè¿.0.0.1è¿è¡è½¬å
saddr.sin_family = AF_INET;
saddr.sin_addr.s_addr = inet_addr(".0.0.1");
saddr.sin_port = htons();
if((sc=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==SOCKET_ERROR)
{
printf("error!socket failed!\n");
return -1;
}
val = ;
if(setsockopt(sc,SOL_SOCKET,SO_RCVTIMEO,(char *)&val,sizeof(val))!=0)
{
ret = GetLastError();
return -1;
}
if(setsockopt(ss,SOL_SOCKET,SO_RCVTIMEO,(char *)&val,sizeof(val))!=0)
{
ret = GetLastError();
return -1;
}
if(connect(sc,(SOCKADDR *)&saddr,sizeof(saddr))!=0)
{
printf("error!socket connect failed!\n");
closesocket(sc);
closesocket(ss);
return -1;
}
// åå ¥æ件:
ofstream oFile("portlog.txt");
if(!oFile)
{
printf("cannot write to the file.\n");
closesocket(ss);
closesocket(sc);
return 0 ;
}
while(1)
{
//ä¸é¢ç代ç 主è¦æ¯å®ç°éè¿ã0ã0ã1è¿ä¸ªå°åæå 转åå°çæ£çåºç¨ä¸ï¼å¹¶æåºççå å转ååå»ã
//å¦ææ¯å æ¢å 容çè¯ï¼å¯ä»¥åæ¤å¤è¿è¡å 容åæåè®°å½
//å¦ææ¯æ»å»å¦TELNETæå¡å¨ï¼å©ç¨å ¶é«æéç»éç¨æ·çè¯ï¼å¯ä»¥åæå ¶ç»éç¨æ·ï¼ç¶åå©ç¨åéç¹å®çå 以å«æçç¨æ·èº«ä»½æ§è¡ã
num = recv(ss,buf,,0);
if(num>0)
{
oFile<<"\n== DATA =========================================\n";
oFile<<buf;
send(sc,buf,num,0);
}
else if(num==0)
break;
num = recv(sc,buf,,0);
if(num>0)
{
oFile<<"\n== DATA =========================================\n";
oFile<<buf;
send(ss,buf,num,0);
}
else if(num==0)
break;
}
oFile.close();
closesocket(ss);
closesocket(sc);
return 0 ;
}
易语言 发送封包 的源码怎么写?
知识库搜索 “网截”
调发送 事件 所属对象:网截 操作系统支持:Windows
当Windows系统中WinSock使用程序调用send函数时触发此事件,您可以在本事件中读取或更改此次被调用函数的参数。如不更改任何参数并保持处理默认调用,返回0、#拦截操作.默认调用;如要处理本次调用为无效,返回1、#拦截操作.无效调用;如要更改本次调用的任何参数,返回2、#拦截操作.更改调用;如要关闭连接(closesocket),返回3、#拦截操作.关闭拦截。
语法: 整数型 _网截_调发送 (调用者信息,套接字句柄,网络数据,调用方式)
参数名
描 述
调用者信息
调用者信息;传址;调用者的进程及当前使用线程的相关信息。
套接字句柄
整数型;传址;WinSock的SOCKET句柄。
网络数据
网络数据;传址;要发送的网络数据。
调用方式
整数型;传址;该参数使用方法请参见WinSock2文档(建议参考MSDN)中关于"send"函数 "flags"参数的使用方法。
例程:
说明:
当Windows系统中WinSock使用程序调用send函数时触发此事件,您可以在本事件中读取或更改此次被调用函数的参数。如不更改任何参数并保持处理默认调用,返回0、#拦截操作.默认调用;如要处理本次调用为无效,返回1、#拦截操作.无效调用;如要更改本次调用的任何参数,返回2、#拦截操作.更改调用;如要关闭连接(closesocket),返回3、#拦截操作.关闭拦截。
参见:例程 网络服务安装文件1.1版
--------------------------------------------------------------------------------
©版权所有 大连大有吴涛易语言软件开发有限公司 电话:-- 传真:--