2017-10-31 23 views
-3

私は以下の質問を説明しようとしますが、私は答えを求めてグーグルで試してみましたが、まず私はグーグルで何をすべきかわからず、私には意味をなさないものは見つかりませんでした。誰かがそれを説明できますか?どうもありがとう。TCP経由でC#でパケットを送信していますか?

こんにちは。私はTCPを使用して簡単なネットワークパケットを送信しようとしています。私はUDPを使用してUDPを使ってそれを本当に簡単にやっています。私はTcpClientを使ってみましたが、UDPと同じSendメソッドを持っていませんか?

public void OnUdp() 
{ 
    var client = new UdpClient(Host, Port); 
    client.Send(rubbish, rubbish.Length); 
} 
+5

の例です。それは例を持っています。 https://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient.aspx – spodger

+0

[this one](http://www.c-sharpcorner.com/UploadFile/201fc1)をお読みください。/creating-a-serversharp47client-application-using-tcp-prot /)too –

+0

msdnの例を参照してください。この例では、ソケットクラスでTCPを使用しています。ソケットクラスをTCPListenerやTCPClientのようなソケットを継承する任意のクラスに置き換えることができます:https://docs.microsoft.com/en-us/dotnet/framework/network-programming/socket-code-examples – jdweng

答えて

1

これがれるtcpClientのマニュアルを読んでみhttps://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient.aspx

static void Connect(String server, String message) 
{ 
    try 
    { 
    // Create a TcpClient. 
    // Note, for this client to work you need to have a TcpServer 
    // connected to the same address as specified by the server, port 
    // combination. 
    Int32 port = 13000; 
    TcpClient client = new TcpClient(server, port); 

    // Translate the passed message into ASCII and store it as a Byte array. 
    Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);   

    // Get a client stream for reading and writing. 
    // Stream stream = client.GetStream(); 

    NetworkStream stream = client.GetStream(); 

    // Send the message to the connected TcpServer. 
    stream.Write(data, 0, data.Length); 

    Console.WriteLine("Sent: {0}", message);   

    // Receive the TcpServer.response. 

    // Buffer to store the response bytes. 
    data = new Byte[256]; 

    // String to store the response ASCII representation. 
    String responseData = String.Empty; 

    // Read the first batch of the TcpServer response bytes. 
    Int32 bytes = stream.Read(data, 0, data.Length); 
    responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes); 
    Console.WriteLine("Received: {0}", responseData);   

    // Close everything. 
    stream.Close();   
    client.Close();   
    } 
    catch (ArgumentNullException e) 
    { 
    Console.WriteLine("ArgumentNullException: {0}", e); 
    } 
    catch (SocketException e) 
    { 
    Console.WriteLine("SocketException: {0}", e); 
    } 

    Console.WriteLine("\n Press Enter to continue..."); 
    Console.Read(); 
} 
+1

これは非常に悪い例です。 1つのメッセージの後に接続を閉じます。初心者のために悲しみがたくさんあります。 – jdweng

+0

また、メッセージには、パラメータの検証を行わずにASCII文字セットにも含まれている文字のみが含まれていることが前提です。これにより、データを静かに破損させることが容易になります。 –

関連する問題