Sockets: Difference between revisions
Content added Content deleted
m (→{{header|Java}}: Added note about using Print objects to help with streams) |
m (Changed over to works with template, removed extra stuff) |
||
Line 3: | Line 3: | ||
=={{header|Ada}}== |
=={{header|Ada}}== |
||
{{works with|Gnat|3.15p}} |
|||
this example is specific to the Gnat Compiler. |
|||
with Ada.Text_IO; use Ada.Text_IO; |
with Ada.Text_IO; use Ada.Text_IO; |
||
with GNAT.Sockets; use GNAT.Sockets; |
with GNAT.Sockets; use GNAT.Sockets; |
||
Line 63: | Line 62: | ||
$sock->free; |
$sock->free; |
||
=={{header|Python}}== |
=={{header|Python}}== |
||
'''Interpreter:''' [[Python]] |
|||
import socket |
import socket |
||
sock = socket.socket(AF_INET, SOCK_STREAM) |
sock = socket.socket(AF_INET, SOCK_STREAM) |
Revision as of 18:58, 19 February 2008
![Task](http://static.miraheze.org/rosettacodewiki/thumb/b/ba/Rcode-button-task-crushed.png/64px-Rcode-button-task-crushed.png)
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()
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