• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1325
  • Last Modified:

Socket programming example.

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
dryzone
Asked:
dryzone
1 Solution
 
shivsaCommented:
did u check this. this is pretty staright forward and easy.
http://www.linuxgazette.com/issue74/tougher.html
0
 
shivsaCommented:
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
 
dryzoneAuthor Commented:
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
Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

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.

 
shivsaCommented:
java
0
 
shivsaCommented:
# javac -g Foo.java           <- to compile
and then run with
# java Foo                       <- to run
0
 
dryzoneAuthor Commented:
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
 
dryzoneAuthor Commented:
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
 
asbharadwajCommented:
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
 
cluedonCommented:

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
 
dryzoneAuthor Commented:
Thanks I will look at it.

0
 
dryzoneAuthor Commented:
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
 
moduloCommented:
PAQed, with points refunded (300)

modulo
Community Support Moderator
0

Featured Post

Learn to develop an Android App

Want to increase your earning potential in 2018? Pad your resume with app building experience. Learn how with this hands-on course.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now