Sockets
Sockets
You are encouraged to solve this task according to the task description, using any language you may know.
You are encouraged to solve this task according to the task description, using any language you may know.
For this exercise a program is open a socket to localhost on port 256 and send the message "hello socket world" before closing the socket. Catching any exceptions or errors is not required.
Ada
with Ada.Text_IO; use Ada.Text_IO; with GNAT.Sockets; use GNAT.Sockets; procedure SocketSend is procedure sendData( ip : String ; msg : String ) is Client : Socket_Type; Address : Sock_Addr_Type; Channel : Stream_Access; done : boolean :=false; begin Create_Socket (Client); Address.Addr := Inet_Addr(ip); Address.Port := 256; Connect_Socket (Client, Address); Channel := Stream (Client); String'Write ( Channel , msg ); Close_Socket (client); end; begin initialize; sendData("127.0.0.1","Hello Socket World"); end;
Java
import java.net.*; public class SocketSend { public static void main(String args[]) throws java.io.IOException { sendData("localhost", "Hello Socket World"); } public static void sendData(String host, String msg) throws java.io.IOException{ Socket sock = new Socket( host, 256 ); sock.getOutputStream().write(msg.getBytes()); sock.getOutputStream().flush(); sock.close(); } }
Encapsulating the Socket's OutputStream in a PrintStream (for data) or PrintWriter (for text) may be easier in more complex programs for their auto-flush abilities and their overloaded print and println methods. The write method from the original OutputStream will still be available.
Perl
use Socket; $host = gethostbyname('localhost'); $in = sockaddr_in(256, $host); $proto = getprotobyname('tcp'); socket(Socket_Handle, AF_INET, SOCK_STREAM, $proto); connect(Socket_Handle, $in); send(Socket_Handle, 'Hello socket world', 0, $in); close(Socket_Handle);
Object oriented version.
use Socket::Class; $sock = Socket::Class->new( 'remote_port' => 256, ) || die Socket::Class->error; $sock->send('Hello socket world'); $sock->free;
Python
import socket sock = socket.socket(AF_INET, SOCK_STREAM) sock.connect(("localhost", 256)) sock.sendall("hello socket world") sock.close()
Rhope
Interpreter: Rhope (alpha 1)
Socket Send(0,0) |: [New@Net Client["localhost",256]]Put String["hello socket world"] :|
The connection is automatically closed when the object is freed.
Toka
needs sockets #! A simple abstraction layer that makes writing trivial servers easy value| server.socket server.connection server.action | [ ( n- ) pBind to server.socket ] is server.setSocket [ ( - ) server.socket pAccept to server.connection ] is server.acceptConnection [ ( - ) server.connection pClose drop ] is server.closeConnection [ ( $- ) >r server.connection r> string.getLength pWrite drop ] is server.send [ ( an- ) server.connection -rot pRead drop ] is server.recieve [ ( qn- ) swap to server.action server.setSocket [ server.acceptConnection server.action invoke server.closeConnection TRUE ] whileTrue ] is server.start #! The actual server [ " hello socket world" server.send ] 256 server.start