socket通信

20180908

 plc c脚本(c script)   装载连接 https://blog.csdn.net/xueyeguiren8/article/details/72621000

client 

#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END


// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END




// Include header files
  #include "WSOCK32.h"


  #define PORT 8888
  #define SERVER_IP "192.168.30.119"
  // Declare local variables
  WSADATA wsaData;
  long lResult = 0;
  BOOL bResult = FALSE;
  SOCKET sMetNet = INVALID_SOCKET;
  struct hostent *pheMetNet = NULL;
  struct servent *pseMetNet = NULL;
  struct sockaddr_in saAddress;
  unsigned long ulCommand = 1;
  char szTelegramData[1024] = "";


  // Get actual communication socket with MetNet-Server
  //sMetNet = (SOCKET)GetTagSDWord("socketState");   // Tag Signed 16-Bit Value
sMetNet=0;
//printf("变量名称%d\n",sMetNet);


  // Examine for active connection with MetNet-Server
  if( (sMetNet == INVALID_SOCKET) || (sMetNet == 0) )
  {
// 加载socket动态链接库(dll)
    WORD wVersionRequested;
    WSADATA wsaData;    // 这结构是用于接收Wjndows Socket的结构信息的
    int err;
 
    wVersionRequested = MAKEWORD( 1, 1 );   // 请求1.1版本的WinSock库
 
    err = WSAStartup( wVersionRequested, &wsaData );
    // Create communication socket
    sMetNet = socket(AF_INET, SOCK_STREAM,0);
    // printf("port------------------->>%d\n",err );
    if( sMetNet == SOCKET_ERROR )
    {
      GetSocketError(0, "Cannot create socket");
    }
    // Prepare communication parameter with MetNet-Server
    saAddress.sin_addr.s_addr =   inet_addr(SERVER_IP);
    saAddress.sin_family = AF_INET;
    saAddress.sin_port =  htons(PORT);
    // Open communication with MetNet-Server
    lResult = connect(sMetNet, (const struct sockaddr *)&saAddress, sizeof(saAddress));


    if( lResult == SOCKET_ERROR )
    {
      GetSocketError(sMetNet, "Cannot connect to server %s", SERVER_IP);
    }
    else
    {
   lResult=send(sMetNet, "nihao\r\n", strlen("nihao\r\n")+1, 0);  // 发送显示欢迎信息
  printf("发送完毕!\n");
  lResult = recv(sMetNet, &szTelegramData[0], (sizeof(szTelegramData) - 1), 0);
  printf("接收完毕!\n");
  if( (lResult > 0) && (WSAGetLastError() == 0) )
  {
    // Terminate receive telegram data
    szTelegramData[lResult] = '\0';
    // Your code ...
   printf("服务器返回数据----------------------------------->%s\n", szTelegramData); 
  }
  else
  {
   printf("----------------------------------->%d\n",  lResult ); 
    // Examine for socket failure (e.g. network error)
    if( (lResult == 0) && (WSAGetLastError() != WSAEWOULDBLOCK) )
    {
      // Close communication with MetNet-Server
      sMetNet = GetSocketError(sMetNet, "Cannot read data from server %s",SERVER_IP);
    }
}
    closesocket(sMetNet);
    WSACleanup();
  }
}
  // Finish action
}

 

 

server——————————————————————————————————————————————————————————————————————

#include "apdefap.h"
void OnClick(char* lpszPictureNam

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值