[PHP] TCP bericht sturen (via poort 80 of 433)

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Atmoz
  • Registratie: Juli 2001
  • Laatst online: 01-10 07:55

Atmoz

Techno!!

Topicstarter
Hallo allemaal,

Wat zou een goede oplossing zijn voor het volgende probleem?

Ik maak (al enkele jaren) gebruik van onderstaand PHP-script.
Dit zorgt ervoor dat als een gebruiker op een link (url naar dit script) klikt, er een bericht (via TCP) naar een programma wat ik in VB.NET heb gemaakt stuurt. Hier draait een simpele TCP-listener en wacht op dat berichtje. Vervolgens wordt er iets getriggerd, maar dat valt buiten de scope van dit topic.

Dit werkt allemaal perfect, maar het probleem is nu dat ik dit script moet gaan verhuizen naar een andere webhost. Schijnbaar zijn die iets strenger en daarom werkt het niet. Ik krijg deze foutmelding:
Socket created
Warning: socket_connect() [function.socket-connect]: unable to connect [10013]: An attempt was made to access a socket in a way forbidden by its access permissions. in \\webfarmfs.hosting\test.nl\www\php\socket.php on line 15
Could not connect: [10013] An attempt was made to access a socket in a way forbidden by its access permissions.
De nieuwe webhost geeft aan dat er alleen via port 80 of 433 kan worden verstuurd.
Maar ik kan die poort(en) nergens opgeven. Ik kan alleen die 8182 opgeven, maar dat is de poort waar het bericht naartoe moet.
Het liefst laat ik dit ook zo.

Wat zou ik nog kunnen doen om dit werkend te krijgen?

Alvast bedankt voor 't meedenken _/-\o_


PHP-script:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php


if(!($sock = socket_create(AF_INET, SOCK_STREAM, 0)))
{
    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);
     
    die("Couldn't create socket: [$errorcode] $errormsg \n");
}
 
echo "Socket created \n";
 
//Connect socket to remote server
if(!socket_connect($sock , 'xx.xx.xx.x' , 8182))
{
    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);
     
    die("Could not connect: [$errorcode] $errormsg \n");
}
 
echo "Connection established \n";
 
$message = "0123456789";
 
//Send the message to the server
if( ! socket_send ( $sock , $message , strlen($message) , 0))
{
    $errorcode = socket_last_error();
    $errormsg = socket_strerror($errorcode);
     
    die("Could not send data: [$errorcode] $errormsg \n");
}
 
echo "Message send successfully \n";

?>



...

Beste antwoord (via Atmoz op 26-01-2018 12:33)


  • timminater
  • Registratie: Augustus 2006
  • Laatst online: 04-10 11:36
Misschien mogelijk op het bericht te laten sturen naar poort 80 of 443 en vervolgens een van onderstaande opties te gebruiken:

1. De VB.NET applicatie aanpassen naar poort 80/443
2. Een reverse proxy instellen en die berichten van poort 80/443 doorsturen naar de goede machine op poort 8182

Alle reacties


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • timminater
  • Registratie: Augustus 2006
  • Laatst online: 04-10 11:36
Misschien mogelijk op het bericht te laten sturen naar poort 80 of 443 en vervolgens een van onderstaande opties te gebruiken:

1. De VB.NET applicatie aanpassen naar poort 80/443
2. Een reverse proxy instellen en die berichten van poort 80/443 doorsturen naar de goede machine op poort 8182

Acties:
  • 0 Henk 'm!

  • Atmoz
  • Registratie: Juli 2001
  • Laatst online: 01-10 07:55

Atmoz

Techno!!

Topicstarter
timminater schreef op vrijdag 26 januari 2018 @ 10:17:
Misschien mogelijk op het bericht te laten sturen naar poort 80 of 443 en vervolgens een van onderstaande opties te gebruiken:

1. De VB.NET applicatie aanpassen naar poort 80/443
2. Een reverse proxy instellen en die berichten van poort 80/443 doorsturen naar de goede machine op poort 8182
Werkt het dan wel denk je?
Je bedoeld omdat ik dan NAAR poort 80 stuur, dat hij ook VANAF poort 80 (bij de webhost) stuurt waardoor het wél werkt?

Acties:
  • 0 Henk 'm!

  • timminater
  • Registratie: Augustus 2006
  • Laatst online: 04-10 11:36
is het proberen waard, indien je poort 80 of poort 443 opgeeft in je php script zou die error dus niet naar boven horen te komen.

moet je dus wel in je router/firewall die poort benutten

en uiteraard nog een van bovenstaande 2 opties toepassen

Acties:
  • 0 Henk 'm!

  • Atmoz
  • Registratie: Juli 2001
  • Laatst online: 01-10 07:55

Atmoz

Techno!!

Topicstarter
timminater schreef op vrijdag 26 januari 2018 @ 10:19:
is het proberen waard, indien je poort 80 of poort 443 opgeeft in je php script zou die error dus niet naar boven horen te komen.

moet je dus wel in je router/firewall die poort benutten

en uiteraard nog een van bovenstaande 2 opties toepassen
Ok dat werkt inderdaad :D

Ik wist niet dat als je naar (bijvoorbeeld) poort 80 iets stuurt, dat die dat dan ook via poort 80 uit stuurt....
Bij UDP is dat in ieder geval toch niet zo ofwel? (daar pakt die toch gewoon een poort wat er op dat moment vrij is?!)

Acties:
  • +1 Henk 'm!

  • dcm360
  • Registratie: December 2006
  • Niet online

dcm360

Moderator Discord

HD7767 powered

De poort aan de kant van de verzender (client) is over het algemeen inderdaad niet hetzelfde als de poort aan de kant van de ontvanger (server). Een firewall kan in de pakketjes uiteraard wel beiden zien, en in dit geval besluit de firewall om alleen communicatie toe te staan als de ontvanger poort 80 of 443 gebruikt.

Waarbij ik er overheen gelezen heb dat het in dit geval waarschijnlijk geen firewall is die de communicatie tegenhoudt. Het concept is echter hetzelfde: de software die de verbinding opzet (PHP in dit geval) kan ingesteld worden om verbindingen naar specifieke poorten te accepteren of weigeren.

[ Voor 32% gewijzigd door dcm360 op 26-01-2018 16:46 ]

Pagina: 1