资源简介
南自以太网103规约文本说明及有效的上位机代码,供电力自动化爱好者下载应用!
代码片段和文件信息
//南自PSL6000网络103协议处理
#include “stdafx.h“
#include “CreateTask.h“
#include “\fsa3000\dev\env\inc\fjRlibdef.h“
unsigned short g_Net_Rec_Buf_Item_In_Pt_PSL =0;
STRUCT_NetRecv g_Net_Recv_Buf_PSL[MAX_NET_RECV_ITEM_NUM];
//BOOL g_PSL103_Udp_sent = FALSE;
//服务器端socket for PSL
UINT PSLInitTcp( LPVOID pParam )
{
BYTE TaskId = (BYTE)(DWORD)pParam; //第一个启动服务器socket的任务ID
//CChannelSignal *pChannel = Task[TaskId]->pChannel;
int i TcpsockAddSizetmp=1;
struct sockaddr_in TcpclientAddr;
struct sockaddr_in TcpserverAddr;
fd_set rd_fds;
SOCKET TcpSocketId=INVALID_SOCKETAcceptTcpId=INVALID_SOCKET;
//只建一个tcp server 在外面判断了,这里不可以再判断
//if(SrvSocketPSL.Server_Has_Create_PSL != 0) return 0;
//SrvSocketPSL.Server_Has_Create_PSL = 1;
TcpsockAddSize = sizeof(struct sockaddr_in);
while(1)
{
if(bThreadExit)break;
memset((char*)&TcpserverAddr0TcpsockAddSize);
TcpserverAddr.sin_family = AF_INET;
TcpserverAddr.sin_port = htons(SrvSocketPSL.TcpPort_PSL);
TcpserverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
if((TcpSocketId = ::socket(AF_INETSOCK_STREAM0))==INVALID_SOCKET)
{
Sleep(800);
continue;
}
if(bind(TcpSocketId(struct sockaddr *)&TcpserverAddrTcpsockAddSize)==SOCKET_ERROR)
{
::closesocket(TcpSocketId);
Sleep(800);
continue;
}
if(listen(TcpSocketIdSOMAXCONN)==SOCKET_ERROR)
{
::closesocket(TcpSocketId);
Sleep(800);
continue;
}
FD_ZERO(&rd_fds);
FD_SET(TcpSocketId&rd_fds);
//进入下面,就会接收多个远方发送的连接请求
while(1)
{
if(bThreadExit)break;
if(select(TcpSocketId+1&rd_fds(struct fd_set *)0(struct fd_set *)0(struct timeval *)0)<=0)
{
if(bThreadExit)break;
continue;
}
if(FD_ISSET(TcpSocketId&rd_fds))
{
tmp=1;
if(ioctlsocket(TcpSocketIdFIONBIO(unsigned long*)&tmp) == SOCKET_ERROR) //非阻塞socket
{
Sleep(20);
continue;
}
AcceptTcpId = accept(TcpSocketId(struct sockaddr *)&TcpclientAddr&TcpsockAddSize);
if(AcceptTcpId != INVALID_SOCKET)
{
for(i=0;i {
if(TcpclientAddr.sin_addr.s_addr == SrvSocketPSL.Client_PSL[i].ConnIp_PSL)
{
if(SrvSocketPSL.Client_PSL[i].Socket_PSL != INVALID_SOCKET)
{
closesocket(SrvSocketPSL.Client_PSL[i].Socket_PSL);
SrvSocketPSL.Client_PSL[i].Socket_PSL = INVALID_SOCKET;
}
//设置为非阻塞
if(ioctlsocket(AcceptTcpIdFIONBIO(unsigned long*)&tmp) == SOCKET_ERROR)
{
shutdown(AcceptTcpId2);
closesocket(AcceptTcpId);
}
else
{
SrvSocketPSL.Client_PSL
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2028983 2013-03-20 17:59 南自以太网103规约.zip
文件 71258 2019-01-02 10:56 PSL103Net.cpp
相关资源
- 双二阶广义积分器SOGI软件锁相(基于
- Txt2Mobi通用版
- new surface pro第5代官方最新系统家庭版
- arm cortex m0 rtl code
- Xcode 12.3(16F156)安装包.zip
- windows 64位系统下安装Code Warrior6.3方法
- 大学英语四级词汇txt
- Zxing-Code_128一维码
- CODE128A 字体
- Code 128 字体
- INBarcodeOCR条码识别组件,识别率及速
- code39条形码字体
- 飞思卡尔68HC08Metrowerks_CodeWarrior开发软
- codewarrior使用指南中文版
- Code Warrior License 破解,各个版本可用
- Codewarrior HCS12 V5.1 license
- codewarrior6.3 win10环境可以安装的破解
- Codesys变成入门手册
- patchedcode.bin
- Spring Boot技术栈博客企业前后端2018
- 奥科网关M1000B配置手册.docx
- logisim汉字字库存储芯片扩展实验.tx
- icm20948_Sensor_Code.zip
- OzCode3.X Patch 注册机
- Qt实现Code39条形码
- 果蝇优化算法优化支持向量回归程序
- 敏感词汇大全 绝对够用
- shellcoder编程揭秘
- 中文维基百科语料库百度网盘网址.
- 286G黑客VIP视频教程BT种子.txt
评论
共有 条评论