With 2 Linux PC's this works, but I wanted to connect a Linux and a Windows computer. Would that be possible with UDP packets?
fpsendto blocks the program now in windows. function socksend( d : pointer ; l : word ) : longint; begin result := fpsendto( inet_socket , d , l , 0 , @inetaddrsend , sizeof( inetaddrsend ) ); end; function sockreceive( d : pointer ; maxlen : word ) : longint; var msg : longint; begin memclr( @inetaddrrecv , sizeof( inetaddrrecv ) ); inetaddrrecv.sin_family := AF_INET; // inetaddrrecv.sin_addr := strtonetaddr( s1 ); // Empfangsadresse // inetaddrrecv.sin_port := htons( net_port ); msg := 0; {$ifdef linux} msg := msg_dontwait; {$endif} result := fprecv( inet_socket , d , maxlen , msg ); // result := fprecvfrom( inet_socket , d , maxlen , msg , @inetaddrrecv , sizeof( inetaddrrecv ) ); end; function init_socket( s1 , s2 : string ; exeproc : net_execproc ; var erg : longint = -1 ) : boolean; var r : boolean; nb : dword; n : integer; const net_port = $8000; begin memclr( @inetaddrbind , sizeof( inetaddrbind ) ); inetaddrbind.sin_family := AF_INET; inetaddrbind.sin_addr := strtonetaddr( s1 ); // Empfangsadresse inetaddrbind.sin_port := htons( net_port ); memclr( @inetaddrsend , sizeof( inetaddrsend ) ); inetaddrsend.sin_family := AF_INET; inetaddrsend.sin_addr := strtonetaddr( s2 ); // Sendeadresse inetaddrsend.sin_port := htons( net_port ); net_execute := exeproc; inet_socket := fpsocket( PF_INET , SOCK_DGRAM , 0 ); if inet_socket >= 0 then begin {$ifdef windows} nb := 1; // 1=nonblocking, 0=blocking n := ioctlsocket( inet_socket , FIONBIO , @nb ); {$endif} inet_bind := fpbind( inet_socket , @inetaddrbind , sizeof( inetaddrbind ) ); erg := socketerror; result := inet_bind = 0; end else result := false; mylo_os_net_ipxok := result; end; procedure exit_socket; begin if inet_socket > 0 then closesocket( inet_socket ); end; _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal