Socket, also known as Socket, is divided into connection-oriented and connectionless sockets. They have their own processes in use.
Connection orientation:
Server
1 instantiate socket 2bind local endpoint 3listen listen 4accept accept connection 5accept return new socket 6 new socket receive method revenue cache and send Method send to client 7shutdown method release connection 8 close socket
Client
1 instantiate socket 2connect establish connection 3 new socket receive method revenue cache and send Method send to server side 4shutdown method release connection 5 close socket
Connection-free:
Server
1 instantiate socket 2bind local endpoint 3 new socket receive method revenue cache and send method sent to client 4shutdown method release connection 5 close socket
Client
1 instantiate socket 2bind local endpoint 3 new socket receive method revenue cache and send method sent to server side 4shutdown method release connection 5 close socket
Use code to implement the Socket simple example of the console application
The server code is as follows:
Using System;
Using System. Collections. Generic;
Using System. Linq;
Using System. Text;
Using System. Net;
Using System. Net. Sockets;
Using System. IO;
Using System. Threading;
Namespace socketsample
{
Class Program
{
Static void Main (string [] args)
{
IPHostEntry iphost = Dns. GetHostByName (Dns. GetHostName ());
IPAddress ip = iphost. AddressList [0];
// IPAddress ip = IPAddress. Parse ("192.168.0.101 ");
Console. WriteLine (ip. ToString () + ": 8088 ");
Host h = new Host ();
H. SocketStrat (ip, 8088 );
}
}
Public class Host
{
Socket tsocket;
Public void SocketStrat (IPAddress ip, int port)
{
Try
{
IPEndPoint iep = new IPEndPoint (ip, port );
Tsocket = new Socket (AddressFamily. InterNetwork, SocketType. Stream, ProtocolType. Tcp );
// Socket usocket = new Socket (AddressFamily. InterNetwork, SocketType. Dgram, ProtocolType. Udp );
Tsocket. Bind (iep );
While (true)
{
Tsocket. Listen (0 );
Socket newSocket = tsocket. Accept ();
String teststring = "";
Byte [] testbyte = new byte [1, 1024];
Int bytes;
Bytes = newSocket. Receive (testbyte, testbyte. Length, 0 );
Teststring + = Encoding. ASCII. GetString (testbyte, 0, bytes );
Console. WriteLine (teststring );
String sendStr = "OK! Sucess! ";
Byte [] bs = Encoding. ASCII. GetBytes (sendStr );
// NewSocket. Send (bs, bs. Length, 0 );
EndPoint ep = newSocket. RemoteEndPoint;
NewSocket. SendTo (bs, ep );
NewSocket. Shutdown (SocketShutdown. Both );
NewSocket. Close ();
}
Tsocket. Close ();
}
Catch (SocketException se)
{
Console. WriteLine (se. ToString ());
}
Catch (ArgumentNullException AE)
{
Console. WriteLine (AE. ToString ());
}
Console. ReadLine ();
}
}
}
The client code is as follows:
Using System;
Using System. Collections. Generic;
Using System. Linq;
Using System. Text;
Using System. Net;
Using System. Net. Sockets;
Using System. Threading;
Using System. IO;
Namespace Client
{
Class Program
{
Static void Main (string [] args)
{
Try
{
IPAddress ip = IPAddress. Parse ("192.168.1.118 ");
IPEndPoint iep = new IPEndPoint (ip, 8088 );
Socket s = new Socket (AddressFamily. InterNetwork, SocketType. Stream, ProtocolType. Tcp );
S. Connect (iep );
String str = "hello! This is a socket test ";
Byte [] tbs = Encoding. ASCII. GetBytes (str );
S. Send (tbs, tbs. Length, 0 );
String recvstr = "";
Byte [] rbs = new byte [1024];
S. Receive (rbs, rbs. Length, 0 );
Recvstr + = Encoding. ASCII. GetString (rbs );
Console. WriteLine (recvstr );
S. Shutdown (SocketShutdown. Both );
S. Close ();
}
Catch (ArgumentNullException e)
{
Console. WriteLine ("ArgumentNullException: {0}", e );
}
Catch (SocketException e)
{
Console. WriteLine ("SocketException: {0}", e );
}
Console. ReadLine ();
}
}
}