Solved

Socket programming example.

Posted on 2003-12-08
14
1,302 Views
Last Modified: 2007-12-19
Can anyone give me program examples for communicating between two machines via sockets ?
In more detail.
Machine A runs a program on socket X and machine B runs a program on socket Y.
Any data entered at program on machine A appears at machine B and vice versa.
Any language acceptable, but preferably Java.

Please note:
http://java.sun.com/docs/books/tutorial/networking/sockets/readingWriting.html
is confusing and I do not want to be pointed there unless it does actually work.
Thanks




0
Comment
Question by:dryzone
14 Comments
 
LVL 24

Expert Comment

by:shivsa
ID: 9901156
did u check this. this is pretty staright forward and easy.
http://www.linuxgazette.com/issue74/tougher.html
0
 
LVL 24

Expert Comment

by:shivsa
ID: 9901174
this is an example in java
http://pandonia.canberra.edu.au/ClientServer/week13/javasocket.html

Sockets Programming in Java: A Tutorial
http://www.javaworld.com/javaworld/jw-12-1996/jw-12-sockets.html

Essentials of Java Programming, Part 2 (from MageLang)
http://developer.java.sun.com/developer/onlineTraining/Programming/BasicJava2/

Client-Server Programming with Java Sockets (lots of example code)
http://webster.cs.uga.edu/~jinhua/GIS99/sockets/


0
 
LVL 1

Author Comment

by:dryzone
ID: 9901366
Just another stupid question.
I used to run Java programs with Jar, but it does not work on newer Linux distributions.
What is the execution command used nowadays?
0
Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

 
LVL 24

Expert Comment

by:shivsa
ID: 9901389
java
0
 
LVL 24

Expert Comment

by:shivsa
ID: 9901403
# javac -g Foo.java           <- to compile
and then run with
# java Foo                       <- to run
0
 
LVL 1

Author Comment

by:dryzone
ID: 9901410
Java runtime not on my system.
Which of the runtimes do you suggest.?
There are hordes and each is massive.
Any one of particular long term use?

I will look at your links.. looks promissing and will come back to you.

0
 
LVL 1

Author Comment

by:dryzone
ID: 9904203
Nope,
The Java exam[ples above just don't work for me. Non of the programs would run.
I would like to change the specification to classical languages that can be compiled with known compilers.
Lazarus, Kylix, Ada,  Pascal or C examples.  
Thanks
0
 
LVL 2

Expert Comment

by:asbharadwaj
ID: 9910435
Well
without the JRE on your system, none of the java programs would run

You can find a simple client server program here
http://www.pscode.com/vb/scripts/ShowCode.asp?lngWId=3&txtCodeId=7117

A somewhat basic tutorial on network programming here
http://users.actcom.co.il/~choo/lupg/tutorials/internetworking/internet-theory.html

The man pages should be more than enough to help you write your own programs
once you have an idea of what needs to be done

man socket,bind,listen,connect,accept,send,recv
0
 
LVL 1

Expert Comment

by:cluedon
ID: 10030367

you said any language acceptable, so here's perl.

server.pl:

#!/usr/bin/perl -w
#see http://search.cpan.org/~rgarcia/perl-5.6.2/pod/perlipc.pod

 use IO::Socket;
 use Net::hostent;              # for OO version of gethostbyaddr
 $PORT = 9000;                  # pick something not in use

 $server = IO::Socket::INET->new( Proto     => 'tcp',
                                  LocalPort => $PORT,
                                  Listen    => SOMAXCONN,
                                  Reuse     => 1);

 die "can't setup server" unless $server;
 print "[Server $0 accepting clients]\n";

 while ($client = $server->accept()) {
   $client->autoflush(1);
   print $client ">Welcome to $0; type help for command list.\n";
   $hostinfo = gethostbyaddr($client->peeraddr);
   printf "[Connect from %s]\n", $hostinfo->name || $client->peerhost;
   print $client ">Command? ";

   $line = <$client>;
   chomp($line);
    print $client "\n";
    printf "[%s: %s]\n", $hostinfo->name || $client->peerhost, $line;

     if ($line =~ /date|time/i)  { printf $client "%s\n", scalar localtime;}
     elsif ($line =~ /who/i )       { print  $client `who 2>&1`;   }
     else { print $client "unknown command: [$line]\n"; }

   close $client;
 }


Here's the client program:

#!/usr/bin/perl -w
#see http://search.cpan.org/~rgarcia/perl-5.6.2/pod/perlipc.pod

    use IO::Socket;
    unless (@ARGV > 1) { die "usage: $0 host port command..." }
    $host = shift(@ARGV);
    $port = shift(@ARGV);
    $EOL = "\015\012";
    $BLANK = $EOL x 2;
    foreach $command ( @ARGV ) {
        print "sending $command: \n";
        $remote = IO::Socket::INET->new( Proto     => "tcp",
                                         PeerAddr  => $host,
                                         PeerPort  => "$port",
                                        );
        unless ($remote) { die "cannot connect to $host" }
        $remote->autoflush(1);
        print $remote "$command\n";
        while ( <$remote> ) { print }
        print $remote "quit\n";
        close $remote;
        print "\n";
    }


To test these out you'll need to first run the server, then run the client with command line args.
for example ./client.pl localhost 9000 who date

If you have perl, but dont have some of the modules installed, use cpan.   To install moduels frm
cpan you log in as root & type:   perl -MCPAN -eshell.    That will give you a prompt, then you
just type "install module" and follow the instructions.

Note these are extremely simple examples adapted from the url above.  
0
 
LVL 1

Author Comment

by:dryzone
ID: 10031344
Thanks I will look at it.

0
 
LVL 1

Author Comment

by:dryzone
ID: 11850873
I did not get anything that works. This question is important to me but I am sure there must be something out there that works.
I changed the specification not to use Java. It simply never works for me.
It would be nice to have something in
ADA, Pascal (FPK), Lazarus or even assembler.
0
 

Accepted Solution

by:
modulo earned 0 total points
ID: 11879291
PAQed, with points refunded (300)

modulo
Community Support Moderator
0

Featured Post

Free Tool: Postgres Monitoring System

A PHP and Perl based system to collect and display usage statistics from PostgreSQL databases.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Have you ever been frustrated by having to click seven times in order to retrieve a small bit of information from the web, always the same seven clicks, scrolling down and down until you reach your target? When you know the benefits of the command l…
The purpose of this article is to demonstrate how we can upgrade Python from version 2.7.6 to Python 2.7.10 on the Linux Mint operating system. I am using an Oracle Virtual Box where I have installed Linux Mint operating system version 17.2. Once yo…
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…
A short tutorial showing how to set up an email signature in Outlook on the Web (previously known as OWA). For free email signatures designs, visit https://www.mail-signatures.com/articles/signature-templates/?sts=6651 If you want to manage em…

856 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question