账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    php 跟 c++ socket通讯问题
    40
    0

    现在项目要监听一个软件的识别结果 用socket 跟 软件进行通讯 可是发现 无法接收结果 一直在循环读取 请问大家有什么好的解决方法吗

        $socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
        //连接服务端的套接流,这一步就是使客户端与服务器端的套接流建立联系
        if(socket_connect($socket,'192.168.31.83',5266) == false){
            echo 'connect fail massege:'.socket_strerror(socket_last_error());
        }else{
                echo 'client write success'.PHP_EOL;
                //读取服务端返回来的套接流信息
                while($callback = socket_read($socket,32768,PHP_BINARY_READ)){
                    //socket_getpeername($new_socket, $addr, $port);
                    echo 'server return message is:'.PHP_EOL.$callback;
                }
        }
        socket_close($socket);//工作完毕,关闭套接流
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 奔4000米舔包 普通会员 1楼

      在PHP中,我们可以使用Socket编程来与C++的socket进行通信。以下是一个简单的示例:

      首先,你需要在C++中创建一个socket对象,并将其连接到你的PHP服务器。

      ```cpp

      include

      include

      include

      include

      int main(int argc, char *argv[]) { int socket = socket(AF_INET, SOCK_STREAM, 0); if (socket < 0) { std::cerr << "Error creating socket: " << std::endl; return 1; }

      struct sockaddr_in server_address;
      server_address.sin_family = AF_INET;
      server_address.sin_port = htons(8080);
      
      if (inet_pton(AF_INET, "127.0.0.1", &server_address.sin_addr) < 0)
      {
          std::cerr << "Error converting address to binary: " << std::endl;
          return 1;
      }
      
      if (connect(socket, (struct sockaddr *)&server_address, sizeof(server_address)) < 0)
      {
          std::cerr << "Error connecting socket: " << std::endl;
          return 1;
      }
      
      std::cout << "Socket connected" << std::endl;
      
      // Send some data
      send(socket, "Hello, PHP!", strlen("Hello, PHP!"), 0);
      
      // Receive some data
      char buffer[1024];
      int receive_size;
      if (recv(socket, buffer, sizeof(buffer), 0) < 0)
      {
          std::cerr << "Error receiving data: " << std::endl;
          return 1;
      }
      
      std::cout << "Received data: " << buffer << std::endl;
      
      return 0;
      

      } ```

      然后,你可以使用PHP的socket函数来连接到这个socket,并发送和接收数据。

      ```php

      '127.0.0.1', 'port' => 8080 ); $context = stream_context_create($server_address); $socket->bind($context); $socket->connect($context); ?>

      ```

      注意,这只是一个基本的示例,实际的通信可能会涉及到更多的细节,例如错误处理、连接超时、数据的序列化和反序列化等。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部