Sponsored Content
Full Discussion: perl socket issue
Top Forums Programming perl socket issue Post 302447278 by steadyonabix on Sunday 22nd of August 2010 12:15:22 PM
Old 08-22-2010
Thanks

Cheers for that

I don't seem to have the problem if I run it in debug mode and just set it to run, I still keep the option to terminate the process that way.

No I haven't tried IO::Socket::INET, the use statement I have is: -

Code:
use Socket qw(:DEFAULT :crlf);

I don't really understand these use statements yet, other than a generic understanding that I am including some libraries.

If you are recommending one library / module over another I would appreciate a heads up on why it is better to do so.

Thanks for the feed back.

---------- Post updated at 05:15 PM ---------- Previous update was at 10:51 AM ----------

Thanks for the heads up on the Socket::INET, it seems more flexible and also allows me to set a timeout.

I have discovered how to set the parameters using the => syntax

Code:
	$socket = IO::Socket::INET->new
	(
		LocalPort 	=> 	$lport,
		Type 		=> 	SOCK_STREAM,
		Reuse		=>	1,
		Listen		=>	5,
		Timeout		=>	60,
		proto		=>	$proto
	) or die $msg;

With the old code I could do this: -

Code:
	##------------------------------------------------
	## Get the name and ip of the client
	##------------------------------------------------
	($client_port, $client_ip) = sockaddr_in($client_addr); 
	$client_ipnum = inet_ntoa($client_ip); 
	$client_host = gethostbyaddr($client_ip, AF_INET);

To discover what client was connecting.

Can anyone tell me how I do this using the new IO::Socket::INET?
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

simple socket programming in perl

hi i want to write simple socket program which will listen on socket . here is the code ## read msg on socket #! /usr/bin/perl use IO::Socket::INET; my $MySocket= IO::Socket::INET->new(LocalPort=>1234, Proto=>'udp') ; while ()... (2 Replies)
Discussion started by: zedex
2 Replies

2. Programming

Performance issue with C++ ,Socket

Hi all, I am facing some problem in Socket programming(C++ & Solaris 5.0).I am using socket as basic connecting point & MEP(Mesagae Exchange Protocol) as high level protocol to send & receive Message & ACK, between two different system. MEP is a protocol through which you can send MSG... (0 Replies)
Discussion started by: amartya_sock
0 Replies

3. UNIX for Advanced & Expert Users

connect problem for sctp socket (ipv6 socket) - Runtime fail Invalid Arguments

Hi, I was porting ipv4 application to ipv6; i was done with TCP transports. Now i am facing problem with SCTp transport at runtime. To test SCTP transport I am using following server and client socket programs. Server program runs fine, but client program fails giving Invalid Arguments for... (0 Replies)
Discussion started by: chandrutiptur
0 Replies

4. Shell Programming and Scripting

perl socket

Hello there: What is default value of listen if I, avoid init it on constructor. I need maximum num for Listen. I want to write a daemon thus i need unlimited listen. my $sock = IO::Socket::INET->new( Listen => 20, LocalPort => $port, Reuse => 1) Thanks in advance. (3 Replies)
Discussion started by: Zaxon
3 Replies

5. Programming

C socket issue with SMTP

Hey guys, im trying to write a program that'll create a report then email the report... my problem is when it comes to the socket trying to send the second command after EHLO smtp,*.* When the first command is sent its working fine... but when the program tries to send the second command it... (6 Replies)
Discussion started by: Jess83
6 Replies

6. Shell Programming and Scripting

Perl socket question

Hi there, Really quick question that I have been unable to find an answer for on the web is simply, can use the newer IO::Socket module on my sever process and use the older perl built-in "socket" module to connect to the IO:socket? or do i need to have the same module (be it socket or... (1 Reply)
Discussion started by: rethink
1 Replies

7. Programming

socket function to read a webpage (socket.h)

Why does this socket function only read the first 1440 chars of the stream. Why not the whole stream ? I checked it with gdm and valgrind and everything seems correct... #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <string.h> #include... (3 Replies)
Discussion started by: cyler
3 Replies

8. IP Networking

Clarification - Setting socket options at the same time when socket is listening

I need clarification on whether it is okay to set socket options on a listening socket simultaneously when it is being used in an accept() call? Following is the scenario:- -- Task 1 - is executing in a loop - polling a listen socket, lets call it 'fd', (whose file descriptor is global)... (2 Replies)
Discussion started by: jake24
2 Replies

9. Shell Programming and Scripting

Socket Programming in Perl

Hi All I am getting an error when using the below code Receiver use IO::Socket; $sock = new IO::Socket::INET (LocalHost => 'goldengate', LocalPort => 1200, Proto => 'tcp', Listen => 5, Reuse => 1 ); die "Socket could not be created. Reason: $!" unless $sock; while ($new_sock =... (5 Replies)
Discussion started by: parthmittal2007
5 Replies

10. Shell Programming and Scripting

[PERL] Check if socket is connected before sending data

Hello community, I'm programming a simple code using socket connection in perl: $sock = new IO::Socket::INET( PeerAddr => '192.168.10.7', PeerPort => 8000, Proto => 'tcp'); $sock or die "no socket :$!";Then sending data using a loop: ... (1 Reply)
Discussion started by: Lord Spectre
1 Replies
Net::SSLeay::Handle(3)					User Contributed Perl Documentation				    Net::SSLeay::Handle(3)

NAME
Net::SSLeay::Handle - Perl module that lets SSL (HTTPS) sockets be handled as standard file handles. SYNOPSIS
use Net::SSLeay::Handle qw/shutdown/; my ($host, $port) = ("localhost", 443); tie(*SSL, "Net::SSLeay::Handle", $host, $port); print SSL "GET / HTTP/1.0 "; shutdown(*SSL, 1); print while (<SSL>); close SSL; DESCRIPTION
Net::SSLeay::Handle allows you to request and receive HTTPS web pages using "old-fashion" file handles as in: print SSL "GET / HTTP/1.0 "; and print while (<SSL>); If you export the shutdown routine, then the only extra code that you need to add to your program is the tie function as in: my $socket; if ($scheme eq "https") { tie(*S2, "Net::SSLeay::Handle", $host, $port); $socket = *S2; else { $socket = Net::SSLeay::Handle->make_socket($host, $port); } print $socket $request_headers; ... FUNCTIONS
shutdown shutdown(*SOCKET, $mode) Calls to the main shutdown() don't work with tied sockets created with this module. This shutdown should be able to distinquish between tied and untied sockets and do the right thing. debug my $debug = Net::SSLeay::Handle->debug() Net::SSLeay::Handle->debug(1) Get/set debuging mode. Always returns the debug value before the function call. if an additional argument is given the debug option will be set to this value. make_socket my $sock = Net::SSLeay::Handle->make_socket($host, $port); Creates a socket that is connected to $post using $port. It uses $Net::SSLeay::proxyhost and proxyport if set and authentificates itself against this proxy depending on $Net::SSLeay::proxyauth. It also turns autoflush on for the created socket. USING EXISTING SOCKETS One of the motivations for writing this module was to avoid duplicating socket creation code (which is mostly error handling). The calls to tie() above where it is passed a $host and $port is provided for convenience testing. If you already have a socket connected to the right host and port, S1, then you can do something like: my $socket *S1; if ($scheme eq "https") { tie(*S2, "Net::SSLeay::Handle", $socket); $socket = *S2; } my $last_sel = select($socket); $| = 1; select($last_sel); print $socket $request_headers; ... Note: As far as I know you must be careful with the globs in the tie() function. The first parameter must be a glob (*SOMETHING) and the last parameter must be a reference to a glob (*SOMETHING_ELSE) or a scaler that was assigned to a reference to a glob (as in the example above) Also, the two globs must be different. When I tried to use the same glob, I got a core dump. EXPORT None by default. You can export the shutdown() function. It is suggested that you do export shutdown() or use the fully qualified Net::SSLeay::Handle::shutdown() function to shutdown SSL sockets. It should be smart enough to distinguish between SSL and non-SSL sockets and do the right thing. EXAMPLES
use Net::SSLeay::Handle qw/shutdown/; my ($host, $port) = ("localhost", 443); tie(*SSL, "Net::SSLeay::Handle", $host, $port); print SSL "GET / HTTP/1.0 "; shutdown(*SSL, 1); print while (<SSL>); close SSL; TODO
Better error handling. Callback routine? CAVEATS
Tying to a file handle is a little tricky (for me at least). The first parameter to tie() must be a glob (*SOMETHING) and the last parameter must be a reference to a glob (*SOMETHING_ELSE) or a scaler that was assigned to a reference to a glob ($s = *SOMETHING_ELSE). Also, the two globs must be different. When I tried to use the same glob, I got a core dump. I was able to associate attributes to globs created by this module (like *SSL above) by making a hash of hashes keyed by the file head1. Support for old perls may not be 100%. If in trouble try 5.6.0 or newer. CHANGES
Please see Net-SSLeay-Handle-0.50/Changes file. KNOWN BUGS
If you let this module construct sockets for you with Perl versions below v.5.6 then there is a slight memory leak. Other upgrade your Perl, or create the sockets yourself. The leak was created to let these older versions of Perl access more than one Handle at a time. AUTHOR
Jim Bowlin jbowlin@linklint.org SEE ALSO
Net::SSLeay, perl(1), http://openssl.org/ perl v5.16.2 2006-09-14 Net::SSLeay::Handle(3)
All times are GMT -4. The time now is 02:10 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy