이미지를 base64 인코딩으로 인코딩하고 생성중인 C++ 서버로 보내려고합니다. 나는 그것을하기 위해 PHP를 사용하고있다.socket_write를 사용하여 PHP를 사용하여 큰 패킷 보내기
따라서 PHP 코드는 클라이언트이고 C++ 코드는 수신 서버입니다.
큰 이미지에는 문제가 발생합니다. 예 : 70KB 이미지. 작은 이미지에서 제대로 작동합니다. 5KB 등.
경고 : socket_write() [function.socket-write]
: 소켓 [0]에 쓸 수 없습니다 : 데이터 그램 소켓에서 보낸 메시지가 내부 메시지 버퍼 또는 다른 네트워크 제한보다 크거나 데이터 그램을 수신하는 데 사용 된 버퍼보다 큽니다. into는 데이터 그램 자체보다 작습니다.
이미지를 여러 개의 작은 패킷으로 나누지 않고도이 문제를 해결할 수 있습니까?
송신 패킷이 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 ($ 소켓, $ 메시지, strlen ($ 메시지)) 또는 사망 ("서버로 데이터를 전송할 수 없습니다 \ n"); –
오케이, 방금받은 오류 메시지를 보았습니다. 기본적으로 대답은 '아니오'입니다. 패킷을 분해해야합니다. 하지만 UDP를 사용하는 좋은 이유가 없다면 TCP로 전환 할 것입니다. –
왜이 답변에 투표 한 사람이 있습니까? –