[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1320
  • 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
Veeam and MySQL: How to Perform Backup & Recovery

MySQL and the MariaDB variant are among the most used databases in Linux environments, and many critical applications support their data on them. Watch this recorded webinar to find out how Veeam Backup & Replication allows you to get consistent backups of MySQL databases.

 
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

[Webinar] Cloud and Mobile-First Strategy

Maybe you’ve fully adopted the cloud since the beginning. Or maybe you started with on-prem resources but are pursuing a “cloud and mobile first” strategy. Getting to that end state has its challenges. Discover how to build out a 100% cloud and mobile IT strategy in this webinar.

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