//
//
//
//
//
//
//
//
//
//
软件Tags:
易语言套接字源码例程系统结构:套接字初始化子程序,释放句柄,数据包分解,取服务器端口,取服务器IP,取客户端口,取客户IP,套接字发送字节集,创建套接字,检查连接状态,服务端监听,服务_等待客户进入,服务_等待数据到达,服务_数据处理,连接,客户_等待数据到达,客户_数据处理,服务端断开处理,EnumWindows,GetWindowThreadProcessId,IsWindowVisible,GetClassName,GetWindowText,创建帮助快照,首进程信息,关闭内核对象,打开进程,关闭句柄,获取模块文件名,获取WIN目录,后进程信息,socket,closesocket,select,Connect,Send,recv,bind,WSAStartup,WSACleanup,htons,整数转换点数,inet_addr,listen,获取远端信息,accept,转换为端口号,sendto,recvfrom,创建进程_,创建匿名管道,write,获取启动信息,read,GetLogicalDriveStringsA,创建线程_,结束一个进程,创建快照,打开SC管理服务_,枚举SC管理器服务列表_,枚举SC管理器服务列表1_,关闭SC服务管理句柄_,复制字符串_,取文本内容长度_,取字节长度_,双字节到宽字符_,GetComputerName,GetMessage,TranslateMessage,DispatchMessage,LocalAlloc,WSASocket,setsockopt,getsockopt,shutdown,设置一个套接字选项,取最后错误,TransmitFile,API_取指针长度,获取本地接口信息,DLL命令1, ======公共程序集 || ||------_启动子程序 || ||------套接字初始化子程序 || ||------_主窗口_将被销毁 || ||------释放句柄 || ||------数据包分解 || ||------取服务器端口 || ||------取服务器IP || ||------取客户端口 || ||------取客户IP || ||------套接字发送字节集 || ||------创建套接字 || ||------检查连接状态 || || ======窗口程序集 || ||------_按钮1_被单击 || ||------_按钮3_被单击 || ||------_按钮4_被单击 || ||------_按钮5_被单击 || ||------_按钮6_被单击 || || ======服务端程序集 || ||------服务端监听 || ||------服务_等待客户进入 || ||------服务_等待数据到达 || ||------服务_数据处理 || || ======客户端程序集 || ||------连接 || ||------客户_等待数据到达 || ||------客户_数据处理 || ||------服务端断开处理 || || ======调用的Dll || ||---[dll]------EnumWindows || ||---[dll]------GetWindowThreadProcessId || ||---[dll]------IsWindowVisible || ||---[dll]------GetClassName || ||---[dll]------GetWindowText || ||---[dll]------创建帮助快照 || ||---[dll]------首进程信息 || ||---[dll]------关闭内核对象 || ||---[dll]------打开进程 || ||---[dll]------关闭句柄 || ||---[dll]------获取模块文件名 || ||---[dll]------获取WIN目录 || ||---[dll]------后进程信息 || ||---[dll]------socket || ||---[dll]------closesocket || ||---[dll]------select || ||---[dll]------Connect || ||---[dll]------Send || ||---[dll]------recv || ||---[dll]------bind || ||---[dll]------WSAStartup || ||---[dll]------WSACleanup || ||---[dll]------htons || ||---[dll]------整数转换点数 || ||---[dll]------inet_addr || ||---[dll]------listen || ||---[dll]------获取远端信息 || ||---[dll]------accept || ||---[dll]------转换为端口号 || ||---[dll]------sendto || ||---[dll]------recvfrom || ||---[dll]------创建进程_ || ||---[dll]------创建匿名管道 || ||---[dll]------write || ||---[dll]------获取启动信息 || ||---[dll]------read || ||---[dll]------GetLogicalDriveStringsA || ||---[dll]------创建线程_ || ||---[dll]------结束一个进程 || ||---[dll]------创建快照 || ||---[dll]------打开SC管理服务_ || ||---[dll]------枚举SC管理器服务列表_ || ||---[dll]------枚举SC管理器服务列表1_ || ||---[dll]------关闭SC服务管理句柄_ || ||---[dll]------复制字符串_ || ||---[dll]------取文本内容长度_ || ||---[dll]------取字节长度_ || ||---[dll]------双字节到宽字符_ || ||---[dll]------GetComputerName || ||---[dll]------GetMessage || ||---[dll]------TranslateMessage || ||---[dll]------DispatchMessage || ||---[dll]------LocalAlloc || ||---[dll]------WSASocket || ||---[dll]------setsockopt || ||---[dll]------getsockopt || ||---[dll]------shutdown || ||---[dll]------设置一个套接字选项 || ||---[dll]------取最后错误 || ||---[dll]------TransmitFile || ||---[dll]------API_取指针长度 || ||---[dll]------获取本地接口信息 || ||---[dll]------DLL命令1 调用的DLL命令: .DLL命令EnumWindows,整数型,"user32.dll","EnumWindows",,枚举窗口列表中的所有父窗口(顶级和被所有窗口) 非零表示成功,零表示失败 .参数函数指针,子程序指针,,指向为每个子窗口都调用的一个函数的指针。用AddressOf运算符获得函数在标准模式下的地址 .参数自定义数值,整数型,,在枚举期间,传递给dwcbkd32.ocx定制控件之EnumWindows事件的值。这个值的含义是由程序员规定的; .DLL命令GetWindowThreadProcessId,整数型,"user32","GetWindowThreadProcessId",,;获取与指定窗口关联在一起的一个进程和线程标识符 拥有窗口的线程的标识符 .参数hwnd,整数型,,指定一个变量,用于装载拥有那个窗口的一个进程的标识符 .参数lpdwProcessId,整数型,传址,指定窗口句柄; .DLL命令IsWindowVisible,整数型,"user32","IsWindowVisible",,判断窗口是否可见 如窗口可见则返回TRUE(非零) .参数窗口句柄,整数型,,要测试的那个窗口的句柄; .DLL命令GetClassName,整数型,"user32","GetClassNameA",,为指定的窗口取得类名 以字节数表示的类名长度;排除最后的空中止字符。零表示出错。会设置GetLastError .参数窗口句柄,整数型,,欲获得类名的那个窗口的句柄 .参数缓冲区,文本型,,随同类名载入的缓冲区。预先至少必须分配nMaxCount+1个字符 .参数缓冲区长度,整数型,,由lpClassName提供的缓冲区长度; .DLL命令GetWindowText,整数型,"user32","GetWindowTextA",,取得一个窗体的标题(caption)文字,或者一个控件的内容(在vb里使用:使用vb窗体或控件的caption或text属性) 复制到lpString的字串长度;不包括空中止字符。会设置GetLastError .参数窗口句柄,整数型,,欲获取文字的那个窗口的句柄 .参数缓冲区,文本型,,预定义的一个缓冲区,至少有cch+1个字符大小;随同窗口文字载入 .参数缓冲尺寸,整数型,,lp缓冲区的长度; .DLL命令创建帮助快照,整数型,,"CreateToolhelp32Snapshot" .参数标识,整数型 .参数进程标识,整数型,,指定进程标识.此参数用于指出当前进程,可为零.当TH32CS_SNAPHEAPLIST或TH32CS_SNAPMODULE的值被指定时使用此参数.否则,给予忽略。 .DLL命令首进程信息,整数型,,"Process32First" .参数快照句柄,整数型 .参数进程信息,进程信息2 .DLL命令关闭内核对象,,,"CloseHandle" .参数欲关闭对象句柄,整数型 .DLL命令打开进程,整数型,,"OpenProcess",,从一个进程的标识(ID)返回一个可用于指定操作的句柄,要用“关闭对句柄” .参数访问方式,整数型,,参看常量“进程_” .参数是否继承,逻辑型 .参数进程标识,整数型,,ID .DLL命令关闭句柄,逻辑型,"kernel32","CloseHandle" .参数对象句柄,整数型 .DLL命令获取模块文件名,整数型,"psapi.dll","GetModuleFileNameExA" .参数进程句柄,整数型 .参数模块句柄,整数型 .参数文件名称,文本型 .参数缓冲区长度,整数型 .DLL命令获取WIN目录,整数型,"kernel32.dll","GetWindowsDirectoryA" .参数缓冲区,文本型,传址 .参数缓冲区长度,整数型 .DLL命令后进程信息,整数型,,"Process32Next" .参数快照句柄,整数型 .参数进程信息,进程信息2 .DLL命令socket,整数型,"ws2_32.dll","socket",,创建套接字 .参数af,整数型,,使用的通信协议的协议族 .参数type,整数型,,流套接字类型 .参数protocol,整数型,,使用的通信协议 .DLL命令closesocket,整数型,"ws2_32.dll","closesocket",,销毁套接字 .参数s,整数型,,套接字描述符 .DLL命令select,整数型,"ws2_32.dll","select",,检查套接字状态 .参数nfds,整数型 .参数readfds,fd_set,传址,读 .参数writefds,fd_set,传址,写 .参数exceptfds,fd_set,传址,错误 .参数timeout,整数型,传址,超时 .DLL命令Connect,整数型,"ws2_32.dll","connect",,连接到服务器(TCP) .参数s,整数型,,套接字描述符 .参数addr,套接字地址,传址,地址信息 .参数namelen,整数型,,地址信息长度 .DLL命令Send,整数型,"ws2_32.dll","send",,发送数据(TCP,当这次发送数据未发送完时返回剩余字节数) .参数s,整数型,,套接字描述符 .参数buf,字节集,传址,欲发送的数据 .参数buflen,整数型,,欲发送数据长度 .参数flags,整数型,,0 .DLL命令recv,整数型,"ws2_32.dll","recv",,接收数据(TCP,当数据这次未接收完时返回剩余字节数) .参数s,整数型,,套接字描述符 .参数buf,字节集,传址,数据(提供变量) .参数buflen,整数型,,数据长度 .参数flags,整数型,,0 .DLL命令bind,整数型,"ws2_32.dll","bind",,绑定一个地址和端口 .参数s,整数型,,套接字描述符 .参数name,套接字地址,传址,地址信息 .参数namelen,整数型,,地址信息长度(长度16) .DLL命令WSAStartup,整数型,"ws2_32.dll","WSAStartup",,初始化WnSocket服务 .参数wVR,整数型,,socket版本 .参数lpWSAD,WSADataType,传址,服务信息 .DLL命令WSACleanup,整数型,"ws2_32.dll","WSACleanup",,卸载Winsocket服务 .DLL命令htons,整数型,"ws2_32.dll","htons",,转换为network排列方式的数目 .参数hostshort,整数型,,端口号 .DLL命令整数转换点数,整数型,"ws2_32.dll","inet_ntoa",,将整数格式IP地址转换为点数格式(返回值是内存地址指针) .参数inn,整数型,,欲转换整数格式IP地址 .DLL命令inet_addr,整数型,"ws2_32.dll","inet_addr",,点数格式转换为整数格式IP地址 .参数cp,文本型,,欲被转换的IP地址 .DLL命令listen,整数型,"ws2_32.dll","listen" .参数s,整数型,,套接字描述符 .参数backlog,整数型,,最多容纳客户请求数 .DLL命令获取远端信息,整数型,"ws2_32.dll","getpeername",,获取远端信息(已连接对方IP和端口)。成功返回0 .参数s,整数型,,句柄 .参数name,套接字地址,传址,地址信息 .参数namelen,整数型,传址,name长度,Sockaddr_in长度为16 .DLL命令accept,整数型,"ws2_32.dll","accept",,等待用户进入并接受连接 .参数s,整数型,,套接字描述符 .参数addr,套接字地址,传址,地址信息 .参数addrlen,整数型,传址,地址信息长度(长度为16) .DLL命令转换为端口号,整数型,"ws2_32.dll","ntohs",,转换为端口号ntohs .参数十六位网络端口,整数型,,欲转换值 .DLL命令sendto,整数型,"ws2_32.dll","sendto",,发送数据(UDP) .参数s,整数型,,套接字描述符 .参数buf,文本型,传址,数据 .参数len,整数型,,数据长度 .参数flags,整数型,,0 .参数to,套接字地址,传址,目标地址信息 .参数tolen,整数型,,地址信息长度 .DLL命令recvfrom,整数型,"ws2_32.dll","recvfrom",,接收数据(UDP) .参数s,整数型,,套接字描述符 .参数buf,文本型,传址,数据(提供变量) .参数len,整数型,,数据长度 .参数flags,整数型,,0 .参数from,套接字地址,传址,来源地址信息(提供变量) .参数fromlen,整数型,传址,地址信息长度(提供变量) .DLL命令创建进程_,逻辑型,"kernel32","CreateProcessA" .参数lpApplicationName,整数型,,执行程序文件名 .参数lpCommandLinew,文本型,,参数行 .参数lpProcessAttributes,整数型,,进程安全参数 .参数lpThreadAttributes,整数型,,线程安全参数 .参数bInheritHandles,逻辑型,,继承标记 .参数dwCreationFlags,整数型,,创建标记 .参数lpEnvironment,整数型,,环境变量 .参数lpCurrentDirectory,整数型,,运行该子进程的初始目录 .参数lpStartupInfo,启动信息数据,,创建该子进程的相关参数 .参数lpProcessInformation,进程返回数据,,创建后用于被创建子进程的信息 .DLL命令创建匿名管道,整数型,,"CreatePipe" .参数读入端口,整数型,传址 .参数写入端口,整数型,传址 .参数管道属性,安全性结构,传址 .参数管道大小,整数型 .DLL命令write,,"kernel32.dll","WriteFile" .参数hFile,,,一个文件的句柄 .参数lpBuffer,字节集,传址,要写入的一个数据缓冲区 .参数nNumberOfBytesToWrite,,,要写入数据的字节数量。如写入零字节,表示什么都不写入,但会更新文件的“上一次修改时间”。针对位于远程系统的命名管道,限制在65535个字节以内 .参数lpNumberOfBytesWritten,,传址,实际写入文件的字节数量 .参数lpOverlapped,,,倘若在指定FILE_FLAG_OVERLAPPED的前提下打开文件,这个参数就必须引用一个特殊的结构。那个结构定义了一次异步写操作。否则,该参数应置为空(将声明变为ByValAsLong,并传递零值) .DLL命令获取启动信息,整数型,"kernel32","GetStartupInfoA" .参数启动信息,启动信息数据,传址 .DLL命令read,整数型,"kernel32","ReadFile" .参数文件句柄,整数型 .参数数据缓冲区,字节集,传址,通用 .参数字符数,整数型 .参数实际读入字符数,整数型,传址 .参数异步过程,整数型 .DLL命令GetLogicalDriveStringsA,整数型,"kernel32","GetLogicalDriveStringsA",,$(b) .参数缓冲器长度,整数型 .参数缓冲区,字节集 .DLL命令创建线程_,整数型,,"CreateThread",公开,句柄 .参数安全,整数型 .参数栈大小,整数型 .参数子程序,子程序指针 .参数参数,整数型 .参数标志,整数型 .参数线程ID,整数型,传址 .DLL命令结束一个进程,逻辑型,"kernel32","TerminateProcess",公开,句柄 .参数hProcess,整数型 .参数uExitCode,整数型 .DLL命令创建快照,整数型,,"CreateToolhelp32Snapshot" .参数falg,整数型 .参数id,整数型 .DLL命令打开SC管理服务_,整数型,"advapi32.dll","OpenSCManagerA" .参数机器名称,文本型,,lpMachineName .参数数据库名,整数型,,lpDatabaseName .参数数据库,整数型,,dwDesiredAccess .DLL命令枚举SC管理器服务列表_,整数型,"advapi32.dll","EnumServicesStatusA" .参数SC管理者句柄,整数型,,hSCManager .参数服务类型,整数型,,dwServiceType .参数服务状态,整数型,,dwServiceState .参数服务,整数型,,any,lpServices .参数缓冲区大小,整数型,,cbBufSize .参数需求字节数,整数型,传址,pcbBytesNeeded .参数返回服务名,整数型,传址,lpServicesReturned .参数返回句柄,整数型,,lpResumeHandle .DLL命令枚举SC管理器服务列表1_,整数型,"advapi32.dll","EnumServicesStatusA" .参数SC管理者句柄,整数型,,hSCManager .参数服务类型,整数型,,dwServiceType .参数服务状态,整数型,,dwServiceState .参数服务,字节集,传址,lpServices,any .参数缓冲区大小,整数型,,cbBufSize .参数需求字节数,整数型,传址,pcbBytesNeeded .参数返回服务名,整数型,传址,lpServicesReturned .参数返回句柄,整数型,传址,lpResumeHandle .DLL命令关闭SC服务管理句柄_,整数型,"advapi32.dll","CloseServiceHandle" .参数SC对象句柄,整数型 .DLL命令复制字符串_,整数型,"kernel32.dll","lstrcpyA",,lstrcpyA .参数文本1,字节型,传址,RetVal .参数文本2,整数型,,Ptr .DLL命令取文本内容长度_,整数型,"kernel32.dll","lstrlenA",,lstrlenA .参数文本,整数型,,Ptr .DLL命令取字节长度_,整数型,"kernel32.dll","lstrlenW" .参数待取参数,整数型,,any .DLL命令双字节到宽字符_,整数型,"SHLWAPI","#217",,SHUnicodeToAnsi .参数双字节文本,字节集,传址,lpMultiBVytestyr .参数宽字符文本,文本型,,lpWideCharStr .参数宽字符文本长度,整数型,,cchWideChar .DLL命令GetComputerName,整数型,"kernel32.dll","GetComputerNameA",公开,取计算机名_TRUE(非零)表示成功,否则返回零。 .参数字串缓冲区,文本型,,lpBuffer,随同计算机名载入的字串缓冲区 .参数缓冲区长度,整数型,传址,nSize,缓冲区的长度。这个变量随同返回计算机名的实际长度载入 .DLL命令GetMessage,整数型,"user32","GetMessageA",,从线索消息队列中返回一条消息 .参数lpMsg,MSG .参数hwnd,整数型 .参数wMsgFilterMin,整数型 .参数wMsgFilterMax,整数型 .DLL命令TranslateMessage,整数型,"user32","TranslateMessage",,转换虚拟关键字消息 .参数lpMsg,MSG .DLL命令DispatchMessage,整数型,"user32","DispatchMessageA",,向窗口发送消息 .参数lpMsg,MSG .DLL命令LocalAlloc,整数型 .参数uFlags,整数型 .参数uBytes,整数型 .DLL命令WSASocket,整数型,"Ws2_32.dll","WSASocketA",公开 .参数af,整数型 .参数type,整数型 .参数protocol,整数型 .参数lpProtocolInfo,整数型 .参数g,整数型 .参数dwFlags,整数型 .DLL命令setsockopt,整数型,"ws2_32.dll","setsockopt",公开 .参数s,整数型 .参数level,整数型 .参数optname,整数型,,#SO_ .参数optval,整数型 .参数optlen,整数型 .DLL命令getsockopt,整数型,"ws2_32.dll","getsockopt" .参数s,整数型,,s:一个标识套接口的描述字。 .参数level,整数型,,level:选项定义的层次。支持的层次仅有SOL_SOCKET和IPPROTO_TCP。 .参数optname,整数型,,optname:需获取的套接口选项。 .参数optval,整数型,,optval:指针,指向存放所获得选项值的缓冲区。 .参数optlen,整数型,,optlen:指针,指向optval缓冲区的长度值。 .DLL命令shutdown,整数型,"ws2_32.dll",,公开 .参数s,整数型 .参数how,整数型 .DLL命令设置一个套接字选项,整数型,"ws2_32.dll","setsockopt",,setsockopt设置一个套接字选项 .参数网络通讯标识符,整数型,,s网络通讯标识符描述标识一个套接字。 .参数级别,整数型,,level级别在该选项定义(例如水平,SOL_SOCKET)。 .参数操作名称,整数型,,optname操作名称套接字选项的值被设置(例如,SO_BROADCAST)。该optname参数必须是一个套接字选项定义在指定的水平,或行为是不确定的 .参数操作结构,整数型,,optval操作结构指针在其中所请求的选项的值是指定的缓冲区 .参数操作结构长度,整数型,,optlen操作结构长度大小,指出以字节的缓冲区,由optval参数 .DLL命令取最后错误,整数型,"ws2_32.dll","WSAGetLastError",,WSAGetLastError取最后错误_ .DLL命令TransmitFile,逻辑型,"Mswsock.dll",,公开 .参数hSocket,整数型 .参数hFile,整数型 .参数nNumberOfBytesToWrite,整数型 .参数nNumberOfBytesPerSend,整数型 .参数lpOverlapped,整数型 .参数lpTransmitBuffers,整数型 .参数dwFlags,整数型 .DLL命令API_取指针长度,整数型,,"lstrlen" .参数lpString,整数型,,指向一个字符串的指针 .DLL命令获取本地接口信息,整数型,"ws2_32.dll","getsockname",,getsockname获取本地接口的地址信息(IP和端口)。成功返回0 .参数句柄,整数型,,s .参数地址信息,套接字地址,传址,name .参数长度,整数型,传址,namelenname长度,Sockaddr_in长度为16 .DLL命令DLL命令1
