Csharp/CSharp Tutorial/Network/TcpClient
Содержание
- 1 Create BinaryWriter and BinaryReader from TcpClient
- 2 Create NetworkStream from TcpClient
- 3 Creating Socket Connections
- 4 Network Client and StreamReader
- 5 Network Client with TcpClient and NetworkStream
- 6 Use a NetworkStream to read from a server
- 7 use TcpClient to connect to a server
- 8 Use TcpClient to write to/read from a server
- 9 Write string to server
Create BinaryWriter and BinaryReader from TcpClient
<source lang="csharp">using System; using System.IO; using System.Net; using System.Net.Sockets; class MainClass {
public static void Main() { TcpClient client = new TcpClient(); try { Console.WriteLine("Attempting to connect to the server ","on port 8000."); client.Connect(IPAddress.Parse("127.0.0.1"), 8000); Console.WriteLine("Connection established."); NetworkStream stream = client.GetStream(); using (BinaryWriter w = new BinaryWriter(stream)) { } using (BinaryReader r = new BinaryReader(stream)) { } } catch (Exception err) { Console.WriteLine(err.ToString()); } finally { client.Close(); Console.WriteLine("Port closed."); } }
}</source>
Create NetworkStream from TcpClient
<source lang="csharp">using System; using System.IO; using System.Net.Sockets ; class MainClass {
public static void Main() { TcpClient newSocket = new TcpClient("localhost", 50001); NetworkStream ns = newSocket.GetStream(); byte[] buf = new byte[100]; ns.Read(buf, 0, 100); char[] buf2 = new char[100]; for(int i=0;i<100;i++) buf2[i]=(char)buf[i]; Console.WriteLine(buf2); ns.Close(); newSocket.Close(); }
}</source>
Creating Socket Connections
<source lang="csharp">using System; using System.Net; using System.Net.Sockets; using System.Text; class MainClass {
[STAThread] static void Main(string[] args) { TcpClient MyClient = new TcpClient(); MyClient.Connect("localhost", 10000); NetworkStream MyNetStream = MyClient.GetStream(); if(MyNetStream.CanWrite && MyNetStream.CanRead) { Byte[] sendBytes = Encoding.ASCII.GetBytes("Is anybody there"); MyNetStream.Write(sendBytes, 0, sendBytes.Length); byte[] bytes = new byte[MyClient.ReceiveBufferSize]; MyNetStream.Read(bytes, 0, (int) MyClient.ReceiveBufferSize); string returndata = Encoding.ASCII.GetString(bytes); Console.WriteLine("This is what the host returned to you: " + returndata); }else if (!MyNetStream.CanRead) { Console.WriteLine("You can not write data to this stream"); MyClient.Close(); }else if (!MyNetStream.CanWrite) { Console.WriteLine("You can not read data from this stream"); MyClient.Close(); } }
}</source>
Network Client and StreamReader
<source lang="csharp">using System; using System.Net.Sockets; using System.Threading; using System.Text; public class MainClass {
public static void Main() { int BufferSize = 256; TcpClient tcpSocket = new TcpClient("127.0.0.1", 65000); NetworkStream streamToServer = tcpSocket.GetStream(); System.IO.StreamWriter writer = new System.IO.StreamWriter(streamToServer); writer.Write("message"); writer.Flush(); bool fQuit = false; while (!fQuit) { char[] buffer = new char[BufferSize]; System.IO.StreamReader reader = new System.IO.StreamReader(streamToServer); int bytesRead = reader.Read(buffer, 0, BufferSize); if (bytesRead == 0) fQuit = true; else { string theString = new String(buffer); Console.WriteLine(theString); } } streamToServer.Close(); }
}</source>
Network Client with TcpClient and NetworkStream
<source lang="csharp">using System; using System.Collections.Generic; using System.Net.Sockets; using System.Text;
public class AsynchNetworkClient { public static Main() { TcpClient tcpSocket = new TcpClient("127.0.0.1", 65000); NetworkStream streamToServer = tcpSocket.GetStream(); System.IO.StreamWriter writer =new System.IO.StreamWriter(streamToServer); writer.WriteLine("Hello Programming C#"); writer.Flush(); System.IO.StreamReader reader =new System.IO.StreamReader(streamToServer); string strResponse = reader.ReadLine(); Console.WriteLine("Received: {0}", strResponse); streamToServer.Close(); } }</source>
Use a NetworkStream to read from a server
<source lang="csharp">using System; using System.IO; using System.Net.Sockets ; class MainClass {
public static void Main() { TcpClient newSocket = new TcpClient("localhost", 50001); NetworkStream ns = newSocket.GetStream(); byte[] buf = new byte[100]; ns.Read(buf, 0, 100); char[] buf2 = new char[100]; for(int i=0;i<100;i++) buf2[i]=(char)buf[i]; Console.WriteLine(buf2); ns.Close(); newSocket.Close(); }
}</source>
use TcpClient to connect to a server
<source lang="csharp">using System; using System.IO; using System.Net; using System.Net.Sockets; class MainClass {
public static void Main() { TcpClient client = new TcpClient(); try { Console.WriteLine("Attempting to connect to the server ","on port 8000."); client.Connect(IPAddress.Parse("127.0.0.1"), 8000); Console.WriteLine("Connection established."); NetworkStream stream = client.GetStream(); using (BinaryWriter w = new BinaryWriter(stream)) { } using (BinaryReader r = new BinaryReader(stream)) { } } catch (Exception err) { Console.WriteLine(err.ToString()); } finally { client.Close(); Console.WriteLine("Port closed."); } }
}</source>
Use TcpClient to write to/read from a server
<source lang="csharp">using System; using System.Net; using System.Net.Sockets; using System.IO; public class MainClass {
private static void Main() { using (TcpClient client = new TcpClient()) { Console.WriteLine("Attempting to connect to the server ","on port 8000."); client.Connect(IPAddress.Parse("127.0.0.1"), 8000); using (NetworkStream networkStream = client.GetStream()) { using (BinaryWriter writer = new BinaryWriter(networkStream)) { writer.Write("info"); using (BinaryReader reader = new BinaryReader(networkStream)) { Console.WriteLine(reader.ReadString()); } } } } }
}</source>
Write string to server
<source lang="csharp">using System; using System.Collections.Generic; using System.Net.Sockets; using System.Text;
public class MainClass { public static int Main() { string serverName = "localhost"; Console.WriteLine( "Connecting to {0}", serverName ); TcpClient tcpSocket = new TcpClient( serverName, 65000 ); NetworkStream streamToServer = tcpSocket.GetStream(); string message = "Hello"; Console.WriteLine("Sending {0} to server.", message ); System.IO.StreamWriter writer = new System.IO.StreamWriter( streamToServer ); writer.WriteLine( message ); writer.Flush(); System.IO.StreamReader reader = new System.IO.StreamReader( streamToServer ); string strResponse = reader.ReadLine(); Console.WriteLine( "Received: {0}", strResponse ); streamToServer.Close(); return 0; } }</source>