我想将图像编码为base64编码并将其发送到我正在创建的C++服务器。我使用PHP来做到这一点。使用php使用socket_write发送大型数据包
因此,PHP代码是客户端,C++代码是侦听服务器。
该问题发生在大图像上;例如70KB的图像。它在小图像上正常工作;如5KB。
发生的错误是:警告:socket_write() [function.socket-write]
:无法写入套接字[0]:在数据报套接字上发送的消息大于内部消息缓冲区或其他网络限制,或用于接收数据报的缓冲区成小于数据报本身。
可以解决这个问题,而不会将图像分成几个小包?
我只需要发送数据包为1MB。
这是我使用的代码:
$con=file_get_contents("image url");
$binary_data=base64_encode($con);
$host = "192.168.35.54";
$port = 1060;
$message = $binary_data;
// No Timeout
set_time_limit(0);
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP) or die("Could not create socket\n");
socket_connect($socket, $host, $port) or die("Could not connect to server\n");
socket_write($socket, $message, strlen($message)) or die("Could not send data to server\n");
我使用UDP发送和接收数据。 这里是我使用的php代码: $ con = file_get_contents(“image url”); $ binary_data = base64_encode($ con); $ host =“ip”; $ port = 1060; $ message = $ binary_data; //无超时 set_time_limit(0); \t \t \t \t $插座= socket_create(AF_INET,SOCK_DGRAM,SOL_UDP)或死亡( “无法创建套接字\ n”); socket_connect($ socket,$ host,$ port)或死(“无法连接到服务器\ n”); socket_write($ socket,$ message,strlen($ message))或死(“无法将数据发送到服务器\ n”); – 2013-04-09 17:32:01
好的,我刚刚看到了您收到的错误消息。基本上答案是否定的。你必须打破数据包。但除非你有一个很好的使用UDP的理由,否则我会切换到TCP。 – 2013-04-09 17:33:25
为什么有人投这个答案? – 2013-04-12 05:41:39