C # socket Communication Example 1

Source: Internet
Author: User
Tags getstream

// Basic Socket programming

// Server:

Using System. Net;

Using System. Net. Sockets;

Using System. Text;

Using System. Threading;

 

Thread mythread;

Socket socket;

// Clear all resources in use.

Protected override void Dispose (bool disposing)

{

Try

{

Socket. Close (); // release resources

Mythread. Abort (); // Abort a thread

}

Catch {}

 

If (disposing)

{

If (components! = Null)

{

Components. Dispose ();

}

}

Base. Dispose (disposing );

}

Public static IPAddress GetServerIP ()

{

IPHostEntry ieh = Dns. GetHostByName (Dns. GetHostName ());

Return ieh. AddressList [0];

}

Private void BeginListen ()

{

IPAddress ServerIp = GetServerIP ();

IPEndPoint iep = new IPEndPoint (ServerIp, 8000 );

Socket = new Socket (AddressFamily. InterNetwork, SocketType. Stream, ProtocolType. Tcp );

 

Byte [] byteMessage = new byte [1, 100];

This. label1.Text = iep. ToString ();

Socket. Bind (iep );

// Do

While (true)

{

Try

{

Socket. Listen (5 );

Socket newSocket = socket. Accept ();

NewSocket. Receive (byteMessage );

 

String sTime = DateTime. Now. tow.timestring ();

String msg = sTime + ":" + "Message from :";

Msg + = newSocket. RemoteEndPoint. ToString () + Encoding. Default. GetString (byteMessage );

This. listBox1.Items. Add (msg );

 

}

Catch (SocketException ex)

{

This. label1.Text + = ex. ToString ();

}

}

// While (byteMessage! = Null );

}

// Start listening

Private void button#click (object sender, System. EventArgs e)

{

Try

{

Mythread = new Thread (new ThreadStart (BeginListen ));

Mythread. Start ();

 

}

Catch (System. Exception er)

{

MessageBox. Show (er. Message, "finished", MessageBoxButtons. OK, MessageBoxIcon. Stop );

}

}

 

 

// Client:

 

Using System. Net;

Using System. Net. Sockets;

Using System. Text;

 

Private void button#click (object sender, System. EventArgs e)

{

BeginSend ();

}

Private void BeginSend ()

{

String ipdomainthis.txt ip. Text;

String portdeskthis.txt port. Text;

 

IPAddress serverIp = IPAddress. Parse (ip );

Int serverPort = Convert. ToInt32 (port );

IPEndPoint iep = new IPEndPoint (serverIp, serverPort );

Byte [] byteMessage;

// Do

//{

Socket socket = new Socket (AddressFamily. InterNetwork, SocketType. Stream, ProtocolType. Tcp );

Socket. Connect (iep );

 

ByteMessage = Encoding. ASCII. GetBytes (textBox1.Text );

Socket. Send (byteMessage );

Socket. Shutdown (SocketShutdown. Both );

Socket. Close ();

//}

// While (byteMessage! = Null );

}

 

Transmission and receiving end based on TCP protocol

 

TCP Receiver

 

Using System. Net. Sockets; // use the TcpListen class

Using System. Threading; // use the thread

Using System. IO; // use StreamReader class

 

Int port = 8000; // define the listening port number

Private Thread thThreadRead; // creates a Thread to listen on the port number and receive information.

Private TcpListener tlTcpListen; // listener port number

Private bool blistener = true; // sets the flag bit to determine the listening status

Private NetworkStream nsStream; // create the received basic data stream

Private StreamReader srRead;

Private System. Windows. Forms. StatusBar statusBar1;

Private System. Windows. Forms. Button button1;

Private System. Windows. Forms. ListBox listBox1; // read data from the basic network data stream

Private TcpClient tcClient;

 

Private void Listen ()

{

Try

{

TlTcpListen = new TcpListener (port); // initialize the TcpListener instance on the port 8000

TlTcpListen. Start (); // Start listening

StatusBar1.Text = "listening ";

TcClient = tlTcpListen. AcceptTcpClient (); // TCP Connection Request

NsStream = tcClient. GetStream (); // obtain the basic network data stream used to send and receive data

SrRead = new StreamReader (nsStream); // obtains the basic network data stream to initialize the StreamReader instance.

StatusBar1.Text = "connected! ";

 

While (blistener) // loop listener

{

String sMessage = srRead. ReadLine (); // read a row of data from the basic network data stream

If (sMessage = "STOP") // determines whether the TCP Connection Control code is disconnected.

{

TlTcpListen. Stop (); // disable listening

NsStream. Close (); // release resources

SrRead. Close ();

StatusBar1.Text = "the connection has been closed! ";

ThThreadRead. Abort (); // Abort a thread

Return;

}

 

String sTime = DateTime. Now. tow.timestring (); // the time when the data is received.

ListBox1.Items. Add (sTime + "" + sMessage );

}

}

Catch (System. Security. SecurityException)

{

MessageBox. Show ("failed to listen! "," Error ");

}

}

// Start listening

Private void button#click (object sender, System. EventArgs e)

{

ThThreadRead = new Thread (new ThreadStart (Listen ));

ThThreadRead. Start (); // Start the thread

Button1.Enabled = false;

}

// Clear all resources in use.

Protected override void Dispose (bool disposing)

{

Try

{

TlTcpListen. Stop (); // disable listening

NsStream. Close ();

SrRead. Close (); // release resources

ThThreadRead. Abort (); // Abort a thread

}

Catch {}

 

If (disposing)

{

If (components! = Null)

{

Components. Dispose ();

}

}

Base. Dispose (disposing );

}

 

Sending end of TCP protocol

 

Using System. Net. Sockets; // use the TcpListen class

Using System. Threading; // use the thread

Using System. IO; // use StreamWriter class

Using System. Net; // use the IPAddress class and IPHostEntry class.

 

Private StreamWriter swWriter; // used to transmit data to the basic network data stream

Private NetworkStream nsStream; // create the network-based data stream for data transmission

Private TcpClient tcpClient;

Private System. Windows. Forms. Button button1;

Private System. Windows. Forms. TextBox textBox1;

Private System. Windows. Forms. Button button2;

Private System. Windows. Forms. TextBox textBox2;

Private System. Windows. Forms. StatusBar statusBar1;

Private System. Windows. Forms. Label label1;

Private System. Windows. Forms. Label label2; // submit a TCP connection request to the remote host.

Private bool tcpConnect = false; // defines the identifier to indicate whether a TCP connection is established.

 

// Connection

Private void button#click (object sender, System. EventArgs e)

{

IPAddress ipRemote;

Try

{

IpRemote = IPAddress. Parse (textBox1.Text );

}

Catch // determine the validity of a given IP Address

{

MessageBox. Show ("The Entered IP address is invalid! "," Error message! ");

Return;

}

 

IPHostEntry ipHost;

Try

{

IpHost = Dns. Resolve (textBox1.Text );

}

Catch // determine whether the host corresponding to the IP address is online

{

MessageBox. Show ("the remote host is not online! "," Error message! ");

Return;

}

 

String sHostName = ipHost. HostName;

Try

{

TcpClient tcpClient = new TcpClient (sHostName, 8000); // apply for a TCP connection to port 8000 of the remote host

NsStream = tcpClient. GetStream (); // obtain the basic network data stream for data transmission through application

SwWriter = new StreamWriter (nsStream); // use the obtained basic network data stream to initialize the StreamWriter instance.

Button1.Enabled = false;

Button2.Enabled = true;

TcpConnect = true;

StatusBar1.Text = "connected! ";

}

Catch

{

MessageBox. Show ("cannot establish a connection with the remote host port 8000! "," Error message! ");

Return;

}

}

 

// Send

Private void button2_Click (object sender, System. EventArgs e)

{

If (textBox2.Text! = "")

{

SwWriter. WriteLine (textBox2.Text); // refresh the data in the current data stream

SwWriter. Flush ();

}

Else

{

MessageBox. Show ("The message cannot be blank! "," Error message! ");

}

}

// Clear all resources in use.

Protected override void Dispose (bool disposing)

{

If (tcpConnect)

{

SwWriter. WriteLine ("STOP"); // send control code

SwWriter. Flush (); // refresh the data in the current data stream

NsStream. Close (); // clear Resources

SwWriter. Close ();

}

If (disposing)

{

If (components! = Null)

{

Components. Dispose ();

}

}

Base. Dispose (disposing );

}

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.