Sockets: Difference between revisions

9,003 bytes added ,  2 months ago
m
→‎{{header|Frink}}: Fixed port number
m (→‎{{header|Phix}}: syntax coloured, marked p2js incompatible)
m (→‎{{header|Frink}}: Fixed port number)
 
(9 intermediate revisions by 7 users not shown)
Line 7:
=={{header|Ada}}==
{{libheader|GNAT RTL}}
<langsyntaxhighlight lang="ada">with GNAT.Sockets; use GNAT.Sockets;
 
procedure Socket_Send is
Line 20:
String'Write (Stream (Client), "hello socket world");
Close_Socket (Client);
end Socket_Send;</langsyntaxhighlight>
 
=={{header|Aime}}==
<langsyntaxhighlight lang="aime">file i, o;
tcpip_connect(i, o, "127.0.0.1", 256, 0);
i.text("hello socket world");</langsyntaxhighlight>
 
=={{header|Arturo}}==
<syntaxhighlight lang="arturo">socket: connect.to:"localhost" 256
send socket "Hello Socket World"
unplug socket</syntaxhighlight>
 
=={{header|AutoHotkey}}==
modified from
[http://www.autohotkey.com/forum/topic13829.html script] by zed gecko.
<langsyntaxhighlight lang="autohotkey">Network_Port = 256
Network_Address = 127.0.0.1
NewData := false
Line 154 ⟶ 159:
ExitSub:
DllCall("Ws2_32\WSACleanup")
ExitApp</langsyntaxhighlight>
 
=={{header|AutoIt}}==
 
<langsyntaxhighlight AutoItlang="autoit">Func _HelloWorldSocket()
TCPStartup()
$Socket = TCPConnect("127.0.0.1", 256)
Line 164 ⟶ 169:
TCPCloseSocket($Socket)
TCPShutdown()
EndFunc</langsyntaxhighlight>
 
=={{header|AWK}}==
Line 171 ⟶ 176:
 
Server:
<langsyntaxhighlight lang="awk">BEGIN {
s="/inet/tcp/256/0/0"
print strftime() |& s
close(s)
}
</syntaxhighlight>
</lang>
 
Test client:
<langsyntaxhighlight lang="awk">BEGIN {
s="/inet/tcp/0/localhost/256"
s |& getline
print $0
close(s)
}</langsyntaxhighlight>
 
=={{header|BBC BASIC}}==
{{works with|BBC BASIC for Windows}}
<langsyntaxhighlight lang="bbcbasic"> INSTALL @lib$+"SOCKLIB"
PROC_initsockets
Line 199 ⟶ 204:
PROC_closesocket(socket%)
PROC_exitsockets</langsyntaxhighlight>
 
=={{header|C}}==
Line 208 ⟶ 213:
With little changes it could work on MS Windows (without Cygwin) too. But I don't know exactly how. I have tested it using <code>nc -l -p 256</code>.
 
<langsyntaxhighlight lang="c">#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <unistd.h>
 
const char *msg = "hello socket world";
Line 244 ⟶ 250:
freeaddrinfo(addrs);
}
}</langsyntaxhighlight>
 
=={{header|C sharp|C#}}==
 
<langsyntaxhighlight lang="csharp">using System;
using System.IO;
using System.Net.Sockets;
Line 262 ⟶ 268:
tcp.Close();
}
}</langsyntaxhighlight>
 
Clean Socket alternative:
 
<langsyntaxhighlight lang="csharp">using System.Text;
using System.Net.Sockets;
 
Line 281 ⟶ 287:
}
}
}</langsyntaxhighlight>
 
=={{header|C++}}==
I have tested it using <code>nc -vlp 4321</code>.
 
<langsyntaxhighlight lang="cpp">//compile with g++ main.cpp -lboost_system -pthread
 
#include <boost/asio.hpp>
Line 301 ⟶ 307:
 
return 0;
}</langsyntaxhighlight>
 
=={{header|Cind}}==
 
<langsyntaxhighlight lang="cind">
var libsocket = @("lib","socket");
// connect
Line 318 ⟶ 324:
// close socket
libsocket.close(socket);
</syntaxhighlight>
</lang>
 
=={{header|Clojure}}==
<langsyntaxhighlight lang="clojure">(ns socket-example
(:import (java.net Socket)
(java.io PrintWriter)))
Line 330 ⟶ 336:
(.println printer msg)))
(send-data "localhost" "hello socket world")</langsyntaxhighlight>
 
=={{header|Common Lisp}}==
Line 336 ⟶ 342:
{{libheader|usocket}}
 
<langsyntaxhighlight lang="lisp">CL-USER> (usocket:with-client-socket (socket stream "localhost" 256)
(write-line "hello socket world" stream)
(values))
; No value</langsyntaxhighlight>
 
<langsyntaxhighlight lang="lisp">aurora ~% sudo nc -l -p 256
hello socket world</langsyntaxhighlight>
 
=={{header|D}}==
<langsyntaxhighlight lang="d">module socket ;
import std.stdio ;
import std.socket ;
Line 359 ⟶ 365:
writefln("Socket %d bytes sent.", res) ;
socket.close() ;
}</langsyntaxhighlight>
 
=={{header|Delphi}}==
<langsyntaxhighlight Delphilang="delphi">program Sockets;
 
{$APPTYPE CONSOLE}
Line 380 ⟶ 386:
lTCPClient.Free;
end;
end.</langsyntaxhighlight>
 
=={{header|Elena}}==
ELENA 4.1 :
<langsyntaxhighlight lang="elena">import system'net;
import system'text;
import extensions'text;
Line 396 ⟶ 402:
socket.write(AnsiEncoder.toByteArray(0, s.Length, s));
socket.close()
}</langsyntaxhighlight>
 
=={{header|Elixir}}==
<syntaxhighlight lang="elixir">
<lang Elixir>
defmodule Sockets do
require Logger
Line 410 ⟶ 416:
 
Sockets.send_message(256, "hello socket world")
</syntaxhighlight>
</lang>
 
=={{header|Emacs Lisp}}==
Line 416 ⟶ 422:
Emacs treats network connections as sub-processes. <code>make-network-process</code> is the low-level socket creation,
 
<langsyntaxhighlight Lisplang="lisp">(let ((proc (make-network-process :name "my sock"
:host 'local ;; or hostname string
:service 256)))
(process-send-string proc "hello socket world")
(delete-process proc))</langsyntaxhighlight>
 
=={{header|Erlang}}==
<langsyntaxhighlight lang="erlang">-module(socket).
-export([start/0]).
 
Line 431 ⟶ 437:
ok = gen_tcp:send(Sock, "hello socket world"),
ok = gen_tcp:close(Sock).
</syntaxhighlight>
</lang>
 
=={{header|Factor}}==
<langsyntaxhighlight lang="factor">"localhost" 256 <inet> utf8 [ "hello socket world" print ] with-client</langsyntaxhighlight>
 
=={{header|Fantom}}==
 
<langsyntaxhighlight lang="fantom">
using inet
 
Line 453 ⟶ 459:
}
}
</syntaxhighlight>
</lang>
 
=={{header|Forth}}==
{{works with|GNU Forth|0.7.0}}
<langsyntaxhighlight lang="forth">include unix/socket.fs
 
s" localhost" 256 open-socket
Line 463 ⟶ 469:
dup s" hello socket world" rot write-socket
 
close-socket</langsyntaxhighlight>
 
=={{header|FreeBASIC}}==
{{libheader|winsock}}
{{works with|Windows FreeBASIC}}
<syntaxhighlight lang="vbnet">' We import the windows sockets library
#Include Once "windows.bi"
#Include Once "win/winsock.bi"
 
#include "fbgfx.bi"
 
#define NET_BUFLEN 1024
 
'--- SENDER ---
 
Dim As WSADATA wsaData
 
Dim As SOCKET sendSocket
Dim As sockaddr_in recvAddr
Dim As Integer port = 256
Dim As Ubyte sendBuf(NET_BUFLEN-1)
Dim As Integer bufLen = NET_BUFLEN
Dim As Integer iResult
Dim As String message = "hello socket world"
 
' We copy the message to the buffer
For i As Ubyte = 1 To Len(message)
sendBuf(i-1) = Cbyte(Asc(Mid(message, i, 1)))
Next
 
' We update bufLen to be the length of the message
bufLen = Len(message)
 
' We initialize Winsock
If (WSAStartup(MAKEWORD(2,2), @wsaData) <> 0) Then
Beep: Print "Error: Winsock init"
Sleep
End
End If
 
' We create the socket
sendSocket = socket_(AF_INET, SOCK_DGRAM, IPPROTO_UDP)
If sendSocket = INVALID_SOCKET Then
Beep: Print "Error: Net socket"
WSACleanup()
Sleep
End
End If
 
' We configure the server structure
recvAddr.sin_family = AF_INET
recvAddr.sin_port = htons(256)
recvAddr.sin_addr.s_addr = inet_addr("127.0.0.1")
 
' We send the message
Print "Trying: Net send"
iResult = sendto(sendSocket, @sendBuf(0), bufLen, 0, Cptr(sockaddr Ptr, @recvAddr), Sizeof(recvAddr))
If (iResult = SOCKET_ERROR) Then
Beep: Print "Error: Net send"
closesocket(sendSocket)
WSACleanup()
Sleep
End
Else
Print "number of bytes send:"; iResult
End If
 
iResult = closeSocket(sendSocket)
If (iResult < 0) Then
Beep: Print "Error: Close socket"
End If
 
'closesocket(sock)
WSACleanup()</syntaxhighlight>
 
=={{header|Frink}}==
<syntaxhighlight lang="frink">s = newJava["java.net.Socket", ["localhost", 256]]
w = new Writer[s.getOutputStream[]]
w.println["hello socket world"]
w.close[]</syntaxhighlight>
 
=={{header|Go}}==
<langsyntaxhighlight lang="go">package main
import (
Line 484 ⟶ 569:
fmt.Println(err)
}
}</langsyntaxhighlight>
{{out | Test with nc}}
<pre>
Line 494 ⟶ 579:
 
=={{header|Groovy}}==
<langsyntaxhighlight lang="groovy">s = new java.net.Socket("localhost", 256)
s << "hello socket world"
s.close()</langsyntaxhighlight>
 
=={{header|Haskell}}==
<langsyntaxhighlight lang="haskell">import Network
 
main = withSocketsDo $ sendTo "localhost" (PortNumber $ toEnum 256) "hello socket world"</langsyntaxhighlight>
 
== Icon and Unicon ==
==={{header|Icon}}===
<langsyntaxhighlight lang="icon">link cfunc
procedure main ()
hello("localhost", 1024)
Line 512 ⟶ 597:
procedure hello (host, port)
write(tconnect(host, port) | stop("unable to connect to", host, ":", port) , "hello socket world")
end</langsyntaxhighlight>
Note: Socket support in native Icon is limited and requires the external helper function cfunc.
==={{header|Unicon}}===
Unicon integrated TCP/IP networking and messaging.
<langsyntaxhighlight lang="unicon">procedure main(arglist) #: usage socket port hostname or socket port
hello(arglist[2]|"",arglist[1])
end
Line 531 ⟶ 616:
else stop("Unable to connect to ",host,":",port)
return
end</langsyntaxhighlight>
 
=={{header|IDL}}==
 
<langsyntaxhighlight lang="idl">socket, unit, 'localhost',256,/get_lun
printf,unit,"hello socket world"
close, unit</langsyntaxhighlight>
 
"Well-known" port numbers (under 1024 -- such as 256) can also be specified by name (in this case 'RAP').
Line 546 ⟶ 631:
<code>sdcheck</code> raises assertions if anything goes wrong:
 
<langsyntaxhighlight lang="j"> coinsert'jsocket' [ require 'socket' NB. Sockets library
socket =. >{.sdcheck sdsocket'' NB. Open a socket
host =. sdcheck sdgethostbyname 'localhost' NB. Resolve host
sdcheck sdconnect socket ; host ,< 256 NB. Create connection to port 256
sdcheck 'hello socket world' sdsend socket , 0 NB. Send msg</langsyntaxhighlight>
 
=={{header|Java}}==
<langsyntaxhighlight lang="java">import java.io.IOException;
import java.net.*;
public class SocketSend {
Line 566 ⟶ 651:
sock.close();
}
}</langsyntaxhighlight>
Encapsulating the <code>Socket</code>'s <code>OutputStream</code> in a <code>PrintStream</code> (for data) or <code>PrintWriter</code> (for text) may be easier in more complex programs for their auto-flush abilities, encoding management, and their overloaded <code>print</code> and <code>println</code> methods. The <code>write</code> method from the original <code>OutputStream</code> will still be available.
 
=={{header|Jsish}}==
<langsyntaxhighlight lang="javascript">#!/usr/bin/env jsish
function sockets() {
var sock = new Socket({client:true, port:256, noAsync:true, udp:true});
Line 583 ⟶ 668:
sockets() ==> undefined
=!EXPECTEND!=
*/</langsyntaxhighlight>
 
{{out}}
Line 590 ⟶ 675:
 
=={{header|Julia}}==
<syntaxhighlight lang="julia">
<lang Julia>
socket = connect("localhost",256)
write(socket, "hello socket world")
close(socket)
</syntaxhighlight>
</lang>
 
=={{header|Kotlin}}==
<langsyntaxhighlight lang="scala">// version 1.2.21
 
import java.net.Socket
Line 606 ⟶ 691:
it.outputStream.write("hello socket world".toByteArray())
}
}</langsyntaxhighlight>
 
=={{header|Lasso}}==
 
<langsyntaxhighlight Lassolang="lasso">local(net) = net_tcp
#net->connect('127.0.0.1',256)
#net->dowithclose => {
#net->writestring('Hello World')
}</langsyntaxhighlight>
 
=={{header|Lua}}==
{{libheader|LuaSocket}}
<langsyntaxhighlight lang="lua">socket = require "socket"
host, port = "127.0.0.1", 256
 
sid = socket.udp()
sid:sendto( "hello socket world", host, port )
sid:close()</langsyntaxhighlight>
 
=={{header|MACRO-10}}==
<syntaxhighlight lang="macro-10">
 
TITLE SOCKET
 
COMMENT !
 
Socket Example ** PDP-10 Assembly Language (KJX 2022)
Assembler: MACRO-10 Operating System: TOPS-20 V7
 
On TOPS-20, TCP-connections are made by opening a special
file on the "TCP:" device (in this case "TCP:256"). Apart
from the funky filename, there is virtually no difference
between opening files on disk and creating TCP-connections
or endpoints, so we go through the usual sequence of GTJFN
(= get file-handle), OPENF (open file), finally followed
by CLOSF (close file).
 
!
 
SEARCH MONSYM,MACSYM ;Load symbolic names for syscalls.
.REQUIRE SYS:MACREL
 
STDAC. ;Define standard register names.
 
JFN: BLOCK 1 ;File handle for TCP connection.
TCPFN: ASCIZ /TCP:256/ ;TCP "filename"
STR: ASCIZ /Hello World!/ ;String to send.
STRLEN= <.-STR>*5 ;Length of string.
 
GO:: RESET% ;Initialize process.
 
;; Get a file-handle (JFN) for the TCP-connection:
MOVX T1,GJ%SHT ;Do "short" GTJFN% call.
HRROI T2,TCPFN ;TCP "filename" into T2.
GTJFN% ;Get file-handle.
ERJMPS ERROR ; Handle errors.
MOVEM T1,JFN ;Store JFN we got.
 
;; Open the "file":
 
HRRZ T1,JFN ;File-handle without flags into T1.
MOVX T2,FLD(8,OF%BSZ)!OF%RD!OF%WR ;8bit bytes, read+write.
OPENF% ;Open file.
ERJMPS ERROR ; Handle errors.
 
;; Write the string.
 
MOVE T1,JFN ;File-handle into T1.
HRROI T2,STR ;String-pointer into T2.
MOVEI T3,STRLEN ;Length of string into T3.
SOUT% ;Write string.
ERJMPS ERROR ; Handle errors.
 
;; Close file.
 
HRRZ T1,JFN ;Get file-handle into T1.
CLOSF% ;Close file.
ERJMPS ERROR ; Handle errors.
 
;; End program.
 
RESET% ;Reset, to release JFN.
HALTF% ;Halt program.
JRST GO ;Allow for continue-command.
 
;;
;; ERROR: Print standardized error-message by means of ERSTR.
;; This is similar to perror() in C.
;;
 
ERROR: MOVEI T1,.PRIOU ;Print on standard output.
MOVE T2,[.FHSLF,,-1] ;Own process, last error.
SETZ T3 ;No length-limit on error msg.
ERSTR% ;Print error-message.
JFCL ; Ignore errors from ERSTR%.
JFCL ; Dito.
RESET% ;Reset, to release JFN.
HALTF% ;Halt program.
JRST GO ;Allow for continue-command.
 
END GO
</syntaxhighlight>
 
=={{header|Mathematica}}/{{header|Wolfram Language}}==
<langsyntaxhighlight lang="mathematica">socket = SocketConnect["localhost:256", "TCP"];
WriteString[socket, "hello socket world"];
Close[socket];</langsyntaxhighlight>
 
=={{header|Myrddin}}==
<langsyntaxhighlight lang="myrddin">use std
 
const main = {
Line 641 ⟶ 811:
std.fatal("could not open fd: {}\n", err)
;;
}</langsyntaxhighlight>
 
=={{header|Nanoquery}}==
<langsyntaxhighlight Nanoquerylang="nanoquery">import Nanoquery.Net
 
p = new(Port)
p.connect("localhost", 256)
p.write("hello socket world")
p.close()</langsyntaxhighlight>
 
=={{header|Neko}}==
<syntaxhighlight lang="actionscript">/**
<lang ActionScript>/**
Sockets in Neko
Tectonics:
Line 675 ⟶ 845:
socket_write(socket, "hello socket world");
 
socket_close(socket);</langsyntaxhighlight>
 
For testing on port 256, root powers required
Line 689 ⟶ 859:
 
=={{header|Nemerle}}==
<langsyntaxhighlight lang="nemerle">using System.Text;
using System.Net.Sockets;
 
Line 701 ⟶ 871:
sock.Close();
}
}</langsyntaxhighlight>
 
=={{header|NetRexx}}==
{{trans|Java}}
<<langsyntaxhighlight NetRexxlang="netrexx">/* NetRexx */
options replace format comments java crossref symbols nobinary
import java.net.
Line 733 ⟶ 903:
end
return
</syntaxhighlight>
</lang>
 
=={{header|NewLISP}}==
<langsyntaxhighlight lang="newlisp">
(set 'socket (net-connect "localhost" 256))
(net-send socket "hello socket world")
(net-close socket)
(exit)
</syntaxhighlight>
</lang>
 
=={{header|Nim}}==
<langsyntaxhighlight lang="nim">import net
 
var s = newSocket()
s.connect("localhost", Port(256))
s.send("Hello Socket World")
s.close()</langsyntaxhighlight>
 
=={{header|Objeck}}==
<langsyntaxhighlight lang="objeck">
use Net;
 
Line 766 ⟶ 936:
}
}
</syntaxhighlight>
</lang>
 
=={{header|Objective-C}}==
(untested)
<langsyntaxhighlight lang="objc">// declare the class to conform to NSStreamDelegate protocol
 
// in some method
Line 789 ⟶ 959:
[oStream close];
}
}</langsyntaxhighlight>
 
=={{header|OCaml}}==
 
<langsyntaxhighlight lang="ocaml">open Unix
 
let init_socket addr port =
Line 803 ⟶ 973:
let outchan = out_channel_of_descr sock in
let inchan = in_channel_of_descr sock in
(inchan, outchan)</langsyntaxhighlight>
 
<langsyntaxhighlight lang="ocaml">let () =
let ic, oc = init_socket "localhost" 256 in
output_string oc "hello socket world";
;;</langsyntaxhighlight>
 
=={{header|Oz}}==
<langsyntaxhighlight lang="oz">declare
Socket = {New Open.socket init}
in
{Socket connect(port:256)}
{Socket write(vs:"hello socket world")}
{Socket close}</langsyntaxhighlight>
 
=={{header|Pascal}}==
Line 823 ⟶ 993:
 
See also [https://rosettacode.org/wiki/Sockets#Delphi Delphi].
<langsyntaxhighlight lang="pascal">Program Sockets_ExampleA;
 
Uses
Line 878 ⟶ 1,048:
CloseSocket(TCP_Sock);
End.
</syntaxhighlight>
</lang>
 
Variant without superfluous additions:
<langsyntaxhighlight lang="pascal">Program Sockets_ExampleB;
 
Uses
Line 909 ⟶ 1,079:
fpSend(TCP_Sock, PMessage, Message_Len, 0);
End.
</syntaxhighlight>
</lang>
 
=={{header|Perl}}==
<langsyntaxhighlight lang="perl">use Socket;
 
$host = gethostbyname('localhost');
Line 920 ⟶ 1,090:
connect(Socket_Handle, $in);
send(Socket_Handle, 'hello socket world', 0, $in);
close(Socket_Handle);</langsyntaxhighlight>
 
Object oriented version.
<langsyntaxhighlight lang="perl">use Socket::Class;
 
$sock = Socket::Class->new(
Line 929 ⟶ 1,099:
) || die Socket::Class->error;
$sock->send('hello socket world');
$sock->free;</langsyntaxhighlight>
 
=={{header|Phix}}==
Note this fails for me with "connection refused", just like the Go/Python/Ruby entries.
<!--<langsyntaxhighlight Phixlang="phix">(notonline)-->
<span style="color: #008080;">without</span> <span style="color: #008080;">js</span> <span style="color: #000080;font-style:italic;">-- (sockets)</span>
<span style="color: #008080;">include</span> <span style="color: #000000;">builtins</span><span style="color: #0000FF;">\</span><span style="color: #000000;">sockets</span><span style="color: #0000FF;">.</span><span style="color: #000000;">e</span>
Line 954 ⟶ 1,124:
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
<span style="color: #7060A8;">WSACleanup</span><span style="color: #0000FF;">()</span>
<!--</langsyntaxhighlight>-->
 
=={{header|PHP}}==
<langsyntaxhighlight PHPlang="php">$socket = fsockopen('localhost', 256);
fputs($socket, 'hello socket world');
fclose($socket);</langsyntaxhighlight>
 
=={{header|PicoLisp}}==
<langsyntaxhighlight PicoLisplang="picolisp">(when (connect "localhost" 256)
(out @ (prinl "hello socket world"))
(close @) )</langsyntaxhighlight>
 
=={{header|Pike}}==
<langsyntaxhighlight lang="pike">import Stdio;
 
int main(){
Line 974 ⟶ 1,144:
con->write("hello socket world");
con->close();
}</langsyntaxhighlight>
 
=={{header|Prolog}}==
This works with Gnu Prolog. Other implementations will have different predicates.
<langsyntaxhighlight Prologlang="prolog">start(Port) :- socket('AF_INET',Socket),
socket_connect(Socket, 'AF_INET'(localhost,Port), Input, Output),
write(Output, 'hello socket world'),
flush_output(Output),
close(Output),
close(Input).</langsyntaxhighlight>
 
=={{header|PureBasic}}==
<langsyntaxhighlight Purebasiclang="purebasic">InitNetwork()
ConnectionID = OpenNetworkConnection("localhost", 256)
SendNetworkString(ConnectionID, "hello socket world")
CloseNetworkConnection(ConnectionID)</langsyntaxhighlight>
 
=={{header|Python}}==
<syntaxhighlight lang ="python">import socket
"""Connect to a socket. Requires Python >= 3.2."""
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
import socket
sock.connect(("localhost", 256))
 
sock.sendall("hello socket world")
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
sock.close()</lang>
sock.connect(("localhost", 256))
sock.sendall(b"hello socket world")
</syntaxhighlight>
 
{{out}}
 
This example output uses netcat (<code>nc</code>) to provide a socket to connect to. Some versions of netcat require the <code>-p</code> (port) flag to be used in combination with <code>-l</code> (listen mode), some treat the combination of <code>-l</code> and <code>-p</code> as an error, and some don't mind either way. On some systems, you can use <code>sudo netstat -tulpn | grep nc</code> to show what port netcat is actually listening on.
 
256 is a "well-known", reserved port number. Binding to well-known ports usually requires elevated permissions. Hence the use of <code>sudo</code> here.
<pre>
$ sudo nc -l -p 256 & python sock.py
[3] 10559
hello socket world[3] Done sudo nc -l -p 256
</pre>
 
=={{header|R}}==
<langsyntaxhighlight lang="rsplus">
s <- make.socket(port = 256)
write.socket(s, "hello socket world")
close.socket(s)
</syntaxhighlight>
</lang>
 
=={{header|Racket}}==
<langsyntaxhighlight lang="racket">#lang racket
(let-values ([(in out) (tcp-connect "localhost" 256)])
(display "hello socket world\n" out)
(close-output-port out))</langsyntaxhighlight>
 
=={{header|Raku}}==
Line 1,015 ⟶ 1,199:
{{Works with|rakudo|2016.03}}
Will fail with a connect error if there is not a socket server of some kind available on the specified host and port.
<syntaxhighlight lang="raku" perl6line>my $host = '127.0.0.1';
my $port = 256;
 
my $client = IO::Socket::INET.new(:$host, :$port);
$client.print( 'hello socket world' );
$client.close;</langsyntaxhighlight>
 
=={{header|Rhope}}==
{{works with|Rhope|alpha 1}}
<langsyntaxhighlight lang="rhope">Socket Send(0,0)
|:
[New@Net Client["localhost",256]]Put String["hello socket world"]
:|</langsyntaxhighlight>
The connection is automatically closed when the object is freed.
 
=={{header|Ring}}==
<langsyntaxhighlight lang="ring">
Load "guilib.ring"
 
Line 1,072 ⟶ 1,256:
waitforbyteswritten(300000)
close()
</syntaxhighlight>
</lang>
 
=={{header|Ruby}}==
<langsyntaxhighlight lang="ruby">require 'socket'
sock = TCPSocket.open("localhost", 256)
sock.write("hello socket world")
sock.close</langsyntaxhighlight>
 
=={{header|Rust}}==
{{works with|Rust 1.0 stable}}
<langsyntaxhighlight lang="rust">use std::io::prelude::*;
use std::net::TcpStream;
 
Line 1,092 ⟶ 1,276:
let _ = my_stream.write(b"hello socket world");
 
} // <- my_stream's drop function gets called, which closes the socket</langsyntaxhighlight>
 
=={{header|Scala}}==
{{libheader|Scala}}
<langsyntaxhighlight Scalalang="scala">import java.net.Socket
 
object sendSocketData {
Line 1,108 ⟶ 1,292:
 
sendData("localhost", "hello socket world")
}</langsyntaxhighlight>
 
=={{header|Scheme}}==
{{works with|Guile|1.8.8}}{{works with|Chicken Scheme|4.6.0}}
<langsyntaxhighlight lang="scheme">(let ((s (socket PF_INET SOCK_STREAM 0)))
(connect s AF_INET (inet-pton AF_INET "127.0.0.1") 256)
(display "hello socket world" s))</langsyntaxhighlight>
 
=={{header|Seed7}}==
Line 1,121 ⟶ 1,305:
which returns a connected internet socket file at a port at localhost.
 
<langsyntaxhighlight lang="seed7">$ include "seed7_05.s7i";
include "socket.s7i";
 
Line 1,131 ⟶ 1,315:
writeln(sock, "hello socket world");
close(sock);
end func;</langsyntaxhighlight>
 
=={{header|SenseTalk}}==
<langsyntaxhighlight lang="sensetalk">
set SocketID to "localhost:256"
open socket SocketID
write "Hello socket world!" to socket SocketID
close socket SocketID
</syntaxhighlight>
</lang>
 
=={{header|Sidef}}==
<langsyntaxhighlight lang="ruby">var host = Socket.gethostbyname('localhost');
var in = Socket.sockaddr_in(256, host);
var proto = Socket.getprotobyname('tcp');
Line 1,149 ⟶ 1,333:
sock.connect(in);
sock.send('hello socket world', 0, in);
sock.close;</langsyntaxhighlight>
 
=={{header|Slate}}==
Line 1,155 ⟶ 1,339:
This uses fairly verbose and low level messages. This will probably be simplified in the future.
 
<langsyntaxhighlight lang="slate">[ | socket |
[ | addr stream |
addr: (Net SocketAddress newOn: '127.0.0.1:256').
Line 1,164 ⟶ 1,348:
stream flush
] ensure: [socket close]
] do.</langsyntaxhighlight>
 
=={{header|Smalltalk}}==
Line 1,171 ⟶ 1,355:
This is taken from [http://sblinn.jottit.com/GNU_Smalltalk_SimpleEcho_TCP_Server here] with few modification to fit the task better.
 
<langsyntaxhighlight lang="smalltalk">PackageLoader fileInPackage: 'TCP'!
 
Object subclass: #HelloSocket
Line 1,218 ⟶ 1,402:
Smalltalk at: #helloServer put: (HelloSocket port: 2560).
 
helloServer run.</langsyntaxhighlight>
 
=={{header|Symsyn}}==
<langsyntaxhighlight lang="symsyn">
'127.0.0.1' $addr
connect $addr 256 sok
'hello socket world' [sok]
close sok
</syntaxhighlight>
</lang>
 
=={{header|Standard ML}}==
<syntaxhighlight lang="text">val txt = Word8VectorSlice.full (Byte.stringToBytes "hello world" ) ;
val set = fn socket => fn ipnr => fn portnr => fn text =>
(
Line 1,236 ⟶ 1,420:
)
;
</syntaxhighlight>
</lang>
call
set ( INetSock.TCP.socket () ) "127.0.0.1" 256 txt ;
=={{header|Tcl}}==
<langsyntaxhighlight lang="tcl">set io [socket localhost 256]
puts -nonewline $io "hello socket world"
close $io</langsyntaxhighlight>
 
=={{header|Toka}}==
<langsyntaxhighlight lang="toka">needs sockets
 
#! A simple abstraction layer that makes writing trivial servers easy
Line 1,258 ⟶ 1,442:
 
#! The actual server
[ " hello socket world" server.send ] 256 server.start</langsyntaxhighlight>
 
=={{header|TXR}}==
 
<langsyntaxhighlight lang="txrlisp">(let* ((server (first (getaddrinfo "localhost" 256)))
(sock (open-socket server.family sock-stream)))
(sock-connect sock server)
(put-string "hello socket world"))</langsyntaxhighlight>
 
=={{header|UNIX Shell}}==
Line 1,271 ⟶ 1,455:
 
{{libheader|nc}}
<langsyntaxhighlight lang="bash">echo "hello socket world" | nc localhost 256</langsyntaxhighlight>
 
When the connection fails, <code>nc</code> exits 1. To see an error message, use <code>nc -v localhost 256</code>.
 
=={{header|Ursa}}==
<langsyntaxhighlight lang="ursa">decl port p
p.connect "localhost" 256
out "hello socket world" endl p
p.close</langsyntaxhighlight>
 
=={{header|Visual Basic .NET}}==
 
<langsyntaxhighlight lang="vbnet">Imports System
Imports System.IO
Imports System.Net.Sockets
Line 1,297 ⟶ 1,481:
tcp.Close()
End Sub
End Class</langsyntaxhighlight>
 
=={{header|Wren}}==
{{trans|C}}
An embedded program so we can ask the C host to call the relevant library functions for us.
 
<lang ecmascript>/* sockets.wren */
Although this worked when originally posted, the connection is now refused. The same applies to the C, Go, Phix, Python and Ruby entries and probably others.
<syntaxhighlight lang="wren">/* Sockets.wren */
 
var AF_UNSPEC = 0
Line 1,367 ⟶ 1,553:
pm = pm[slen..-1]
}
} else if (stat == -1) {
System.print("Connection refused.")
}
var status = Socket.close(sock)
Line 1,372 ⟶ 1,560:
}
addrInfoPtr.free()
}</langsyntaxhighlight>
<br>
Now embed this script in the following C program, compile and run it.
<syntaxhighlight lang="c">/* gcc Sockets.c -o Sockets -lwren -lm */
<lang c>#include <stdio.h>
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
Line 1,575 ⟶ 1,765:
WrenVM* vm = wrenNewVM(&config);
const char* module = "main";
const char* fileName = "sockets2Sockets.wren";
char *script = readFile(fileName);
WrenInterpretResult result = wrenInterpret(vm, module, script);
Line 1,591 ⟶ 1,781:
free(script);
return 0;
}</langsyntaxhighlight>
{{out}}
<pre>
$ sudo nc -l 256 & ./Sockets
$ gcc sockets.c -o sockets -lwren -lm
[23] 6074
$ sudo nc -l 256 & ./sockets
Connection refused.
[199] 10818
hello socket world
</pre>
 
=={{header|X86 Assembly}}==
{{works with|nasm|Linux}}
<langsyntaxhighlight lang="asm">
;using sockets on linux with the 0x80 inturrprets.
;
Line 1,766 ⟶ 1,955:
sport resb 2
buff resb 1024
</syntaxhighlight>
</lang>
 
{{works with|MASM}}<br>
Operates in non-blocking mode.
<langsyntaxhighlight lang="asm">
.586
.model flat,stdcall
Line 1,916 ⟶ 2,105:
 
end start
</syntaxhighlight>
</lang>
 
{{works with|MASM}}<br>
This example works in blocking mode.
<langsyntaxhighlight lang="asm">
.586
.model flat,stdcall
Line 2,039 ⟶ 2,228:
 
end start
</syntaxhighlight>
</lang>
 
=={{header|X86-64 Assembly}}==
===UASM 2.52===
<langsyntaxhighlight lang="asm">
option casemap:none
option literals:on
Line 2,219 ⟶ 2,408:
end
 
</syntaxhighlight>
</lang>
 
=={{header|zkl}}==
<langsyntaxhighlight lang="zkl">var s=Network.TCPClientSocket.connectTo("localhost",256);
s.write("hello socket world"); //-->18
s.close();</langsyntaxhighlight>
 
=={{header|Zsh}}==
<langsyntaxhighlight lang="zsh">zmodload zsh/net/tcp
ztcp localhost 256
print hello socket world >&$REPLY</langsyntaxhighlight>
 
{{omit from|ACL2}}
490

edits