Socket.Send 메서드

정의

연결된 Socket에 데이터를 보냅니다.

오버로드

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

지정된 Socket를 사용하여 데이터를 연결된 SocketFlags에 보냅니다.

Send(ReadOnlySpan<Byte>)

연결된 Socket에 데이터를 보냅니다.

Send(Byte[], Int32, Int32, SocketFlags, SocketError)

지정된 오프셋에서 시작하고 지정된 SocketFlags를 사용하여 지정된 바이트 수의 데이터를 연결된 Socket으로 전송합니다.

Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

지정된 Socket를 사용하여 목록에 있는 버퍼 집합을 연결된 SocketFlags으로 보냅니다.

Send(Byte[], Int32, Int32, SocketFlags)

지정된 오프셋에서 시작하고 지정된 SocketFlags를 사용하여 지정된 바이트 수의 데이터를 연결된 Socket으로 전송합니다.

Send(Byte[], Int32, SocketFlags)

지정된 Socket를 사용하여 원하는 바이트 수의 데이터를 연결된 SocketFlags에 보냅니다.

Send(IList<ArraySegment<Byte>>)

목록에 있는 버퍼 집합을 연결된 Socket으로 보냅니다.

Send(IList<ArraySegment<Byte>>, SocketFlags)

지정된 Socket를 사용하여 목록에 있는 버퍼 집합을 연결된 SocketFlags으로 보냅니다.

Send(Byte[], SocketFlags)

지정된 Socket를 사용하여 데이터를 연결된 SocketFlags에 보냅니다.

Send(ReadOnlySpan<Byte>, SocketFlags)

지정된 Socket를 사용하여 데이터를 연결된 SocketFlags에 보냅니다.

Send(Byte[])

연결된 Socket에 데이터를 보냅니다.

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

지정된 Socket를 사용하여 데이터를 연결된 SocketFlags에 보냅니다.

public:
 int Send(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Send (ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Send : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Send (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

매개 변수

buffer
ReadOnlySpan<Byte>

보낼 데이터가 들어 있는 바이트의 범위입니다.

socketFlags
SocketFlags

보내기 및 받기 동작을 지정하는 열거형 값의 비트 조합입니다.

errorCode
SocketError

이 메서드가 반환될 때 소켓에 대한 오류 코드를 정의하는 열거형 값 중 하나를 포함합니다.

반환

Socket에 보낸 바이트 수입니다.

예외

소켓에 액세스하는 동안 오류가 발생했습니다.

Socket이 닫혔습니다.

설명

Send또는 Accept 메서드에 지정된 원격 호스트에 Connect 데이터를 동기적으로 보내고 성공적으로 전송된 바이트 수를 반환합니다. Send 는 연결 지향 프로토콜과 연결 없는 프로토콜 모두에 사용할 수 있습니다.

이 오버로드에는 보내려는 데이터가 포함된 버퍼가 필요합니다. 기본값은 SocketFlags 0이고, 버퍼 오프셋은 기본값이 0이고, 보낼 바이트 수는 버퍼의 크기로 기본값이 지정됩니다.

연결 없는 프로토콜을 사용하는 경우 이 메서드를 호출하기 전에 를 호출 Connect 해야 합니다. 그렇지 Send 않으면 이 SocketExceptionthrow됩니다. 연결 지향 프로토콜을 사용하는 경우 를 사용하여 Connect 원격 호스트 연결을 설정하거나 를 사용하여 Accept 들어오는 연결을 수락해야 합니다.

연결 없는 프로토콜을 사용 하 고 여러 다른 호스트에 데이터를 보낼 계획 하는 경우는 메서드를 SendTo 사용 해야 합니다. 메서드를 SendTo 사용하지 않는 경우 를 호출할 때마다 를 호출하기 전에 를 호출 Connect 해야 합니다 Send. 를 사용하여 기본 원격 호스트Connect를 설정한 후에도 를 사용할 SendTo 수 있습니다. 를 다시 호출하여 를 호출 Send 하기 전에 기본 원격 호스트를 변경할 수도 있습니다 Connect.

연결 지향 프로토콜 Send 을 사용하는 경우 를 사용하여 Socket.SendTimeout시간 초과를 설정하지 않는 한 버퍼의 모든 바이트가 전송될 때까지 가 차단됩니다. 제한 시간 값을 초과하면 호출에서 Send 을 throw합니다 SocketException. 비블로킹 모드 Send 에서 는 버퍼의 바이트 수보다 적게 보내는 경우에도 성공적으로 완료될 수 있습니다. 애플리케이션은 전송 된 바이트 수를 추적 하 고 애플리케이션에서 버퍼의 바이트를 보낼 때 까지는 작업을 다시 시도를 합니다. 보내는 데이터가 네트워크에 즉시 표시된다는 보장도 없습니다. 네트워크 효율성을 높이기 위해 기본 시스템은 상당한 양의 발신 데이터가 수집될 때까지 전송을 지연할 수 있습니다. 메서드를 Send 성공적으로 완료하면 기본 시스템에 네트워크 전송을 위해 데이터를 버퍼링할 수 있는 공간이 있습니다.

참고

을 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.

중요

전송이 성공적으로 완료되었다고 해서 데이터가 성공적으로 배달되었음을 의미하지는 않습니다. 전송 시스템 내에서 전송할 데이터를 저장할 버퍼 공간이 없는 경우 소켓이 차단 해제 모드에 배치되지 않는 한 전송이 차단됩니다.

추가 정보

적용 대상

Send(ReadOnlySpan<Byte>)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

연결된 Socket에 데이터를 보냅니다.

public:
 int Send(ReadOnlySpan<System::Byte> buffer);
public int Send (ReadOnlySpan<byte> buffer);
member this.Send : ReadOnlySpan<byte> -> int
Public Function Send (buffer As ReadOnlySpan(Of Byte)) As Integer

매개 변수

buffer
ReadOnlySpan<Byte>

보낼 데이터가 들어 있는 바이트의 범위입니다.

반환

Socket에 보낸 바이트 수입니다.

예외

소켓에 액세스하는 동안 오류가 발생했습니다.

Socket이 닫혔습니다.

설명

Send또는 Accept 메서드에 지정된 원격 호스트에 Connect 데이터를 동기적으로 보내고 성공적으로 전송된 바이트 수를 반환합니다. Send 는 연결 지향 프로토콜과 연결 없는 프로토콜 모두에 사용할 수 있습니다.

이 오버로드에는 보내려는 데이터가 포함된 버퍼가 필요합니다. 기본값은 SocketFlags 0이고, 버퍼 오프셋은 기본값이 0이고, 보낼 바이트 수는 버퍼의 크기로 기본값이 지정됩니다.

연결 없는 프로토콜을 사용하는 경우 이 메서드를 호출하기 전에 를 호출 Connect 해야 합니다. 그렇지 Send 않으면 이 SocketExceptionthrow됩니다. 연결 지향 프로토콜을 사용하는 경우 를 사용하여 Connect 원격 호스트 연결을 설정하거나 를 사용하여 Accept 들어오는 연결을 수락해야 합니다.

연결 없는 프로토콜을 사용 하 고 여러 다른 호스트에 데이터를 보낼 계획 하는 경우는 메서드를 SendTo 사용 해야 합니다. 메서드를 SendTo 사용하지 않는 경우 를 호출할 때마다 를 호출하기 전에 를 호출 Connect 해야 합니다 Send. 를 사용하여 기본 원격 호스트Connect를 설정한 후에도 를 사용할 SendTo 수 있습니다. 를 다시 호출하여 를 호출 Send 하기 전에 기본 원격 호스트를 변경할 수도 있습니다 Connect.

연결 지향 프로토콜 Send 을 사용하는 경우 를 사용하여 Socket.SendTimeout시간 초과를 설정하지 않는 한 버퍼의 모든 바이트가 전송될 때까지 가 차단됩니다. 제한 시간 값을 초과하면 호출에서 Send 을 throw합니다 SocketException. 비블로킹 모드 Send 에서 는 버퍼의 바이트 수보다 적게 보내는 경우에도 성공적으로 완료될 수 있습니다. 애플리케이션은 전송 된 바이트 수를 추적 하 고 애플리케이션에서 버퍼의 바이트를 보낼 때 까지는 작업을 다시 시도를 합니다. 보내는 데이터가 네트워크에 즉시 표시된다는 보장도 없습니다. 네트워크 효율성을 높이기 위해 기본 시스템은 상당한 양의 발신 데이터가 수집될 때까지 전송을 지연할 수 있습니다. 메서드를 Send 성공적으로 완료하면 기본 시스템에 네트워크 전송을 위해 데이터를 버퍼링할 수 있는 공간이 있습니다.

참고

을 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.

중요

전송이 성공적으로 완료되었다고 해서 데이터가 성공적으로 배달되었음을 의미하지는 않습니다. 전송 시스템 내에서 전송할 데이터를 저장할 버퍼 공간이 없는 경우 소켓이 차단 해제 모드에 배치되지 않는 한 전송이 차단됩니다.

추가 정보

적용 대상

Send(Byte[], Int32, Int32, SocketFlags, SocketError)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

지정된 오프셋에서 시작하고 지정된 SocketFlags를 사용하여 지정된 바이트 수의 데이터를 연결된 Socket으로 전송합니다.

public:
 int Send(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Send (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Send : byte[] * int * int * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Send (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

매개 변수

buffer
Byte[]

전송할 데이터를 포함하는 형식 Byte의 배열입니다.

offset
Int32

데이터 보내기를 시작할 데이터 버퍼의 위치입니다.

size
Int32

보낼 바이트 수입니다.

socketFlags
SocketFlags

SocketFlags 값의 비트 조합입니다.

errorCode
SocketError

소켓 오류를 저장하는 SocketError 개체입니다.

반환

Socket에 보낸 바이트 수입니다.

예외

buffer이(가) null인 경우

offset 가 0보다 작습니다.

또는

offsetbuffer의 길이보다 큽니다.

또는

size 가 0보다 작습니다.

또는

sizebuffer의 길이에서 offset 매개 변수 값을 뺀 크기보다 큰 경우

socketFlags가 값의 유효한 조합이 아닌 경우

또는

Socket에 액세스하는 동안 운영 체제 오류가 발생한 경우

Socket이 닫혔습니다.

예제

다음 코드 예제에서는 데이터 버퍼, 오프셋, 크기를 지정하고 SocketFlags 연결된 Socket에 데이터를 보냅니다.

// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
int SendReceiveTest4( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      
      // Blocks until send returns.
      int byteCount = server->Send( msg, 0, msg->Length, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, 0, server->Available,
         SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine(  "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
public static int SendReceiveTest4(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, 0, msg.Length, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);

        // Get reply from the server.
        byteCount = server.Receive(bytes, 0, bytes.Length, SocketFlags.None);

        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, offset, message size, and socket flags.
Public Shared Function SendReceiveTest4(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, 0, msg.Length, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, 0, server.Available, SocketFlags.None)
        
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest4

설명

Send또는 Accept 메서드에 지정된 원격 호스트에 Connect 데이터를 동기적으로 보내고 성공적으로 전송된 바이트 수를 반환합니다. Send 는 연결 지향 프로토콜과 연결 없는 프로토콜 모두에 사용할 수 있습니다.

이 오버로드에서 플래그를 DontRoute 매개 변수로 socketflags 지정하면 보내는 데이터가 라우팅되지 않습니다.

연결되지 않은 프로토콜을 사용하는 경우 이 메서드를 호출하기 전에 를 호출 Connect 해야 합니다. 그렇지 Send 않으면 이 SocketExceptionthrow됩니다. 연결 지향 프로토콜을 사용하는 경우 를 사용하여 Connect 원격 호스트 연결을 설정하거나 를 사용하여 Accept 들어오는 연결을 수락해야 합니다.

연결되지 않은 프로토콜을 사용하고 여러 다른 호스트에 데이터를 보내려는 경우 를 사용해야 SendTo합니다. 를 사용하지 SendTo않는 경우 에 대한 각 호출 전에 를 호출 Connect 해야 합니다 Send. 를 사용하여 기본 원격 호스트Connect를 설정한 후에도 사용할 SendTo 수 있습니다. 를 다시 호출하여 를 호출 Send 하기 전에 기본 원격 호스트를 변경할 수도 있습니다 Connect.

또한 크기가 기본 서비스 공급자의 최대 패킷 크기를 초과하지 않는지 확인해야 합니다. 이 경우 데이터그램은 전송 Send 되지 않고 을 throw합니다 SocketException.

연결 지향 프로토콜 Send 을 사용하는 경우 를 사용하여 Socket.SendTimeout시간 제한이 설정되지 않은 한 요청된 바이트 수가 전송될 때까지 가 차단됩니다. 제한 시간 값을 초과하면 호출에서 Send 을 throw합니다 SocketException. 비블로킹 모드에서 은 Send 요청하는 바이트 수보다 적게 보내더라도 성공적으로 완료될 수 있습니다. 애플리케이션은 전송 된 바이트 수를 추적 하 고 애플리케이션에서 요청 된 바이트 수를 보낼 때 까지는 작업을 다시 시도를 합니다. 보내는 데이터가 네트워크에 즉시 표시된다는 보장도 없습니다. 네트워크 효율성을 높이기 위해 기본 시스템은 상당한 양의 발신 데이터가 수집될 때까지 전송을 지연할 수 있습니다. 메서드를 Send 성공적으로 완료하면 기본 시스템에 네트워크 전송을 위해 데이터를 버퍼링할 수 있는 공간이 있습니다.

참고

을 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

참고

전송이 성공적으로 완료되었다고 해서 데이터가 성공적으로 배달되었음을 의미하지는 않습니다. 전송 시스템 내에서 전송할 데이터를 저장할 버퍼 공간이 없는 경우 소켓이 차단 해제 모드에 배치되지 않는 한 전송이 차단됩니다.

참고

애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.

추가 정보

적용 대상

Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

지정된 Socket를 사용하여 목록에 있는 버퍼 집합을 연결된 SocketFlags으로 보냅니다.

public:
 int Send(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Send (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Send : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Send (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

매개 변수

buffers
IList<ArraySegment<Byte>>

보낼 데이터가 들어 있는 ArraySegment<T> 형식의 Byte 목록입니다.

socketFlags
SocketFlags

SocketFlags 값의 비트 조합입니다.

errorCode
SocketError

소켓 오류를 저장하는 SocketError 개체입니다.

반환

Socket에 보낸 바이트 수입니다.

예외

buffers이(가) null인 경우

buffers가 비어 있는 경우

소켓에 액세스하는 동안 오류가 발생했습니다.

Socket이 닫혔습니다.

설명

이 오버로드에는 보내려는 데이터가 포함된 버퍼가 하나 이상 필요합니다. 기본값은 SocketFlags 0입니다. 플래그를 DontRoute 매개 변수로 socketFlags 지정하면 보내는 데이터가 라우팅되지 않습니다.

연결되지 않은 프로토콜을 사용하는 경우 이 메서드를 호출하기 전에 를 호출 Connect 해야 합니다. 그렇지 Send 않으면 이 SocketExceptionthrow됩니다. 연결 지향 프로토콜을 사용하는 경우 를 사용하여 Connect 원격 호스트 연결을 설정하거나 를 사용하여 Accept 들어오는 연결을 수락해야 합니다.

연결 없는 프로토콜을 사용 하 고 여러 다른 호스트에 데이터를 보낼 계획 하는 경우는 메서드를 SendTo 사용 해야 합니다. 메서드를 SendTo 사용하지 않는 경우 에 대한 각 호출 전에 를 호출 Connect 해야 합니다 Send. 를 사용하여 기본 원격 호스트Connect를 설정한 후에도 를 사용할 SendTo 수 있습니다. 를 다시 호출하여 를 호출 Send 하기 전에 기본 원격 호스트를 변경할 수도 있습니다 Connect.

연결 지향 프로토콜 Send 을 사용하는 경우 를 사용하여 Socket.SendTimeout시간 초과를 설정하지 않는 한 버퍼의 모든 바이트가 전송될 때까지 가 차단됩니다. 제한 시간 값을 초과하면 호출에서 Send 을 throw합니다 SocketException. 비 차단 모드 Send 에서 는 버퍼의 바이트 수보다 적게 보내는 경우에도 성공적으로 완료될 수 있습니다. 애플리케이션은 전송 된 바이트 수를 추적 하 고 애플리케이션에서 버퍼의 바이트를 보낼 때 까지는 작업을 다시 시도를 합니다. 보내는 데이터가 네트워크에 즉시 표시된다는 보장도 없습니다. 네트워크 효율성을 높이기 위해 기본 시스템은 상당한 양의 발신 데이터가 수집될 때까지 전송을 지연할 수 있습니다. 메서드를 Send 성공적으로 완료하면 기본 시스템에 네트워크 전송을 위해 데이터를 버퍼링할 수 있는 공간이 있습니다.

참고

을 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

참고

전송이 성공적으로 완료되었다고 해서 데이터가 성공적으로 배달되었음을 의미하지는 않습니다. 전송 시스템 내에서 전송할 데이터를 저장할 버퍼 공간이 없는 경우 소켓이 차단 해제 모드에 배치되지 않는 한 전송이 차단됩니다.

참고

애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.

적용 대상

Send(Byte[], Int32, Int32, SocketFlags)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

지정된 오프셋에서 시작하고 지정된 SocketFlags를 사용하여 지정된 바이트 수의 데이터를 연결된 Socket으로 전송합니다.

public:
 int Send(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags);
public int Send (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : byte[] * int * int * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags) As Integer

매개 변수

buffer
Byte[]

전송할 데이터를 포함하는 형식 Byte의 배열입니다.

offset
Int32

데이터 보내기를 시작할 데이터 버퍼의 위치입니다.

size
Int32

보낼 바이트 수입니다.

socketFlags
SocketFlags

SocketFlags 값의 비트 조합입니다.

반환

Socket에 보낸 바이트 수입니다.

예외

buffer이(가) null인 경우

offset 가 0보다 작습니다.

또는

offsetbuffer의 길이보다 큽니다.

또는

size 가 0보다 작습니다.

또는

sizebuffer의 길이에서 offset 매개 변수 값을 뺀 크기보다 큰 경우

socketFlags가 값의 유효한 조합이 아닌 경우

또는

Socket에 액세스하는 동안 운영 체제 오류가 발생한 경우

Socket이 닫혔습니다.

예제

다음 코드 예제에서는 데이터 버퍼, 오프셋, 크기를 지정하고 SocketFlags 연결된 Socket에 데이터를 보냅니다.

// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
int SendReceiveTest4( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      
      // Blocks until send returns.
      int byteCount = server->Send( msg, 0, msg->Length, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, 0, server->Available,
         SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine(  "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
public static int SendReceiveTest4(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, 0, msg.Length, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);

        // Get reply from the server.
        byteCount = server.Receive(bytes, 0, bytes.Length, SocketFlags.None);

        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, offset, message size, and socket flags.
Public Shared Function SendReceiveTest4(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, 0, msg.Length, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, 0, server.Available, SocketFlags.None)
        
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest4

설명

Send또는 Accept 메서드에 지정된 원격 호스트에 Connect 데이터를 동기적으로 보내고 성공적으로 전송된 바이트 수를 반환합니다. Send 는 연결 지향 프로토콜과 연결 없는 프로토콜 모두에 사용할 수 있습니다.

이 오버로드에서 플래그를 DontRoute 매개 변수로 socketflags 지정하면 보내는 데이터가 라우팅되지 않습니다.

연결되지 않은 프로토콜을 사용하는 경우 이 메서드를 호출하기 전에 를 호출 Connect 해야 합니다. 그렇지 Send 않으면 이 SocketExceptionthrow됩니다. 연결 지향 프로토콜을 사용하는 경우 를 사용하여 Connect 원격 호스트 연결을 설정하거나 를 사용하여 Accept 들어오는 연결을 수락해야 합니다.

연결되지 않은 프로토콜을 사용하고 여러 다른 호스트에 데이터를 보내려는 경우 를 사용해야 SendTo합니다. 를 사용하지 SendTo않는 경우 에 대한 각 호출 전에 를 호출 Connect 해야 합니다 Send. 를 사용하여 기본 원격 호스트Connect를 설정한 후에도 사용할 SendTo 수 있습니다. 를 다시 호출하여 를 호출 Send 하기 전에 기본 원격 호스트를 변경할 수도 있습니다 Connect.

또한 크기가 기본 서비스 공급자의 최대 패킷 크기를 초과하지 않는지 확인해야 합니다. 이 경우 데이터그램은 전송 Send 되지 않고 을 throw합니다 SocketException.

연결 지향 프로토콜 Send 을 사용하는 경우 를 사용하여 Socket.SendTimeout시간 제한이 설정되지 않은 한 요청된 바이트 수가 전송될 때까지 가 차단됩니다. 제한 시간 값을 초과하면 호출에서 Send 을 throw합니다 SocketException. 비블로킹 모드에서 은 Send 요청하는 바이트 수보다 적게 보내더라도 성공적으로 완료될 수 있습니다. 애플리케이션은 전송 된 바이트 수를 추적 하 고 애플리케이션에서 요청 된 바이트 수를 보낼 때 까지는 작업을 다시 시도를 합니다. 또한 보내는 데이터가 네트워크에 즉시 표시된다는 보장은 없습니다. 네트워크 효율성을 높이기 위해 기본 시스템은 상당한 양의 발신 데이터가 수집될 때까지 전송을 지연할 수 있습니다. 메서드를 Send 성공적으로 완료하면 기본 시스템에 네트워크 전송에 대한 데이터를 버퍼링할 수 있는 공간이 있음을 의미합니다.

참고

를 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명 은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

참고

전송이 성공적으로 완료되었다고 해서 데이터가 성공적으로 전달되었음을 의미하지는 않습니다. 전송 시스템 내에서 전송할 데이터를 저장할 수 있는 버퍼 공간이 없는 경우 소켓이 차단 해제 모드에 배치되지 않는 한 전송이 차단됩니다.

참고

애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.

추가 정보

적용 대상

Send(Byte[], Int32, SocketFlags)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

지정된 Socket를 사용하여 원하는 바이트 수의 데이터를 연결된 SocketFlags에 보냅니다.

public:
 int Send(cli::array <System::Byte> ^ buffer, int size, System::Net::Sockets::SocketFlags socketFlags);
public int Send (byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : byte[] * int * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffer As Byte(), size As Integer, socketFlags As SocketFlags) As Integer

매개 변수

buffer
Byte[]

전송할 데이터를 포함하는 형식 Byte의 배열입니다.

size
Int32

보낼 바이트 수입니다.

socketFlags
SocketFlags

SocketFlags 값의 비트 조합입니다.

반환

Socket에 보낸 바이트 수입니다.

예외

buffer이(가) null인 경우

size가 0보다 작거나 버퍼 크기를 초과하는 경우

socketFlags가 값의 유효한 조합이 아닌 경우

또는

소켓에 액세스하는 동안 운영 체제 오류가 발생한 경우.

Socket이 닫혔습니다.

예제

다음 코드 예제에서는 버퍼에 있는 데이터를 보내고 를 SocketFlags지정합니다None.

// Displays sending with a connected socket
// using the overload that takes a buffer, message size, and socket flags.
int SendReceiveTest3( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int i = server->Send( msg, msg->Length, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", i.ToString() );
      
      // Get reply from the server.
      int byteCount = server->Receive( bytes, server->Available,
         SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer, message size, and socket flags.
public static int SendReceiveTest3(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int i = server.Send(msg, msg.Length, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", i);

        // Get reply from the server.
        int byteCount = server.Receive(bytes, bytes.Length, SocketFlags.None);
        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, message size, and socket flags.
Public Shared Function SendReceiveTest3(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim i As Integer = server.Send(msg, msg.Length, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", i)
        
        ' Get reply from the server.
        Dim byteCount As Integer = server.Receive(bytes, server.Available, SocketFlags.None)
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest3

설명

Send 또는 메서드에 설정된 원격 호스트에 데이터를 동기적으로 보내고 성공적으로 전송된 ConnectAccept 바이트 수를 반환합니다. Send 는 연결 지향 프로토콜과 연결 없는 프로토콜 모두에 사용할 수 있습니다.

이 오버로드에는 보내려는 데이터, 보내려는 바이트 수 및 의 비트 조합 SocketFlags이 포함된 버퍼가 필요합니다. 플래그를 DontRoute 매개 변수로 socketflags 지정하면 보내는 데이터가 라우팅되지 않습니다.

연결 없는 프로토콜을 사용하는 경우 이 메서드 Send 를 호출하기 전에 를 호출 Connect 하거나 를 throwSocketException해야 합니다. 연결 지향 프로토콜을 사용하는 경우 를 사용하여 Connect 원격 호스트 연결을 설정하거나 를 사용하여 Accept 들어오는 연결을 수락해야 합니다.

연결 없는 프로토콜을 사용하고 여러 호스트에 데이터를 보내려는 경우 메서드를 SendTo 사용해야 합니다. 메서드를 사용하지 않는 경우 메서드를 SendTo 호출하기 전에 메서드를 Connect 호출해야 합니다 Send . 를 사용하여 기본 원격 호스트Connect를 설정한 후에도 를 사용할 SendTo 수 있습니다. 를 호출하기 전에 를 다시 호출 Send 하여 기본 원격 호스트를 변경할 수도 있습니다 Connect.

연결 지향 프로토콜 Send 을 사용하면 를 사용하여 Socket.SendTimeout시간 제한이 설정되지 않은 한 요청된 바이트 수가 전송될 때까지 차단됩니다. 제한 시간 값이 초과된 경우 호출은 Send 을 throw합니다 SocketException. 비블로킹 모드 Send 에서는 요청하는 바이트 수보다 적은 바이트를 보내더라도 가 성공적으로 완료될 수 있습니다. 애플리케이션은 전송 된 바이트 수를 추적 하 고 애플리케이션에서 요청 된 바이트 수를 보낼 때 까지는 작업을 다시 시도를 합니다. 또한 보내는 데이터가 네트워크에 즉시 표시된다는 보장은 없습니다. 네트워크 효율성을 높이기 위해 기본 시스템은 상당한 양의 발신 데이터가 수집될 때까지 전송을 지연할 수 있습니다. 메서드를 Send 성공적으로 완료하면 기본 시스템에 네트워크 전송에 대한 데이터를 버퍼링할 수 있는 공간이 있음을 의미합니다.

참고

크기가 기본 서비스 공급자의 최대 패킷 크기를 초과하지 않는지 확인해야 합니다. 이 경우 데이터그램은 전송 Send 되지 않으며 을 throw합니다 SocketException. 를 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명 은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.

중요

전송이 성공적으로 완료되었다고 해서 데이터가 성공적으로 전달되었음을 의미하지는 않습니다. 전송 시스템 내에서 전송할 데이터를 저장할 수 있는 버퍼 공간이 없는 경우 소켓이 차단 해제 모드에 배치되지 않는 한 전송이 차단됩니다.

추가 정보

적용 대상

Send(IList<ArraySegment<Byte>>)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

목록에 있는 버퍼 집합을 연결된 Socket으로 보냅니다.

public:
 int Send(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers);
public int Send (System.Collections.Generic.IList<ArraySegment<byte>> buffers);
member this.Send : System.Collections.Generic.IList<ArraySegment<byte>> -> int
Public Function Send (buffers As IList(Of ArraySegment(Of Byte))) As Integer

매개 변수

buffers
IList<ArraySegment<Byte>>

보낼 데이터가 들어 있는 ArraySegment<T> 형식의 Byte 목록입니다.

반환

Socket에 보낸 바이트 수입니다.

예외

buffers이(가) null인 경우

buffers가 비어 있는 경우

소켓에 액세스하는 동안 오류가 발생했습니다. 아래의 설명 부분을 참조하십시오.

Socket이 닫혔습니다.

설명

Send 는 연결 지향 프로토콜과 연결 없는 프로토콜 모두에 사용할 수 있습니다.

이 오버로드에는 보내려는 데이터가 포함된 버퍼가 하나 이상 필요합니다.

연결 없는 프로토콜을 사용하는 경우 이 메서드를 호출하기 전에 를 호출 Connect 해야 합니다. 또는 Send 가 throw SocketException됩니다. 연결 지향 프로토콜을 사용하는 경우 를 사용하여 Connect 원격 호스트 연결을 설정하거나 를 사용하여 Accept 들어오는 연결을 수락해야 합니다.

연결 없는 프로토콜을 사용 중이며 여러 호스트에 데이터를 보내려는 경우 메서드를 SendTo 사용해야 합니다. 메서드를 SendTo 사용하지 않는 경우 에 대한 각 호출 전에 를 호출 Connect 해야 합니다 Send. 를 사용하여 기본 원격 호스트Connect를 설정한 후에도 를 사용할 SendTo 수 있습니다. 에 대해 다른 호출을 하여 를 호출 Send 하기 전에 기본 원격 호스트를 변경할 수도 있습니다 Connect.

연결 지향 프로토콜 Send 을 사용하는 경우 를 사용하여 Socket.SendTimeout제한 시간을 설정하지 않는 한 버퍼의 모든 바이트가 전송될 때까지 가 차단됩니다. 제한 시간 값이 초과된 경우 호출은 Send 을 throw합니다 SocketException. 비블로킹 모드 Send 에서는 버퍼의 바이트 수보다 적게 보내는 경우에도 가 성공적으로 완료될 수 있습니다. 애플리케이션은 전송 된 바이트 수를 추적 하 고 애플리케이션에서 버퍼의 바이트를 보낼 때 까지는 작업을 다시 시도를 합니다. 또한 보내는 데이터가 네트워크에 즉시 표시된다는 보장은 없습니다. 네트워크 효율성을 높이기 위해 기본 시스템은 상당한 양의 발신 데이터가 수집될 때까지 전송을 지연할 수 있습니다. 메서드를 Send 성공적으로 완료하면 기본 시스템에 네트워크 전송에 대한 데이터를 버퍼링할 수 있는 공간이 있음을 의미합니다.

참고

를 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명 은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

참고

전송이 성공적으로 완료되었다고 해서 데이터가 성공적으로 전달되었음을 의미하지는 않습니다. 전송 시스템 내에서 전송할 데이터를 저장할 수 있는 버퍼 공간이 없는 경우 소켓이 차단 해제 모드에 배치되지 않는 한 전송이 차단됩니다.

참고

애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.

적용 대상

Send(IList<ArraySegment<Byte>>, SocketFlags)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

지정된 Socket를 사용하여 목록에 있는 버퍼 집합을 연결된 SocketFlags으로 보냅니다.

public:
 int Send(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags);
public int Send (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags) As Integer

매개 변수

buffers
IList<ArraySegment<Byte>>

보낼 데이터가 들어 있는 ArraySegment<T> 형식의 Byte 목록입니다.

socketFlags
SocketFlags

SocketFlags 값의 비트 조합입니다.

반환

Socket에 보낸 바이트 수입니다.

예외

buffers이(가) null인 경우

buffers가 비어 있는 경우

소켓에 액세스하는 동안 오류가 발생했습니다.

Socket이 닫혔습니다.

설명

이 오버로드에는 보내려는 데이터가 포함된 버퍼가 하나 이상 필요합니다. 기본값은 SocketFlags 0입니다. 플래그를 DontRoute 매개 변수로 socketFlags 지정하면 보내는 데이터가 라우팅되지 않습니다.

연결 없는 프로토콜을 사용하는 경우 이 메서드를 호출하기 전에 를 호출 Connect 해야 합니다. 또는 Send 가 throw SocketException됩니다. 연결 지향 프로토콜을 사용하는 경우 를 사용하여 Connect 원격 호스트 연결을 설정하거나 를 사용하여 Accept 들어오는 연결을 수락해야 합니다.

연결 없는 프로토콜을 사용 중이며 여러 호스트에 데이터를 보내려는 경우 메서드를 SendTo 사용해야 합니다. 메서드를 SendTo 사용하지 않는 경우 에 대한 각 호출 전에 를 호출 Connect 해야 합니다 Send. 를 사용하여 기본 원격 호스트Connect를 설정한 후에도 를 사용할 SendTo 수 있습니다. 에 대해 다른 호출을 하여 를 호출 Send 하기 전에 기본 원격 호스트를 변경할 수도 있습니다 Connect.

연결 지향 프로토콜 Send 을 사용하는 경우 를 사용하여 Socket.SendTimeout제한 시간을 설정하지 않는 한 버퍼의 모든 바이트가 전송될 때까지 가 차단됩니다. 제한 시간 값이 초과된 경우 호출은 Send 을 throw합니다 SocketException. 비블로킹 모드 Send 에서는 버퍼의 바이트 수보다 적은 바이트를 보내는 경우에도 가 성공적으로 완료될 수 있습니다. 애플리케이션은 전송 된 바이트 수를 추적 하 고 애플리케이션에서 버퍼의 바이트를 보낼 때 까지는 작업을 다시 시도를 합니다. 또한 보내는 데이터가 네트워크에 즉시 표시된다는 보장은 없습니다. 네트워크 효율성을 높이기 위해 기본 시스템은 상당한 양의 발신 데이터가 수집될 때까지 전송을 지연할 수 있습니다. 메서드를 Send 성공적으로 완료하면 기본 시스템에 네트워크 전송에 대한 데이터를 버퍼링할 수 있는 공간이 있음을 의미합니다.

참고

를 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명 은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

참고

전송이 성공적으로 완료되었다고 해서 데이터가 성공적으로 전달되었음을 의미하지는 않습니다. 전송 시스템 내에서 전송할 데이터를 저장할 수 있는 버퍼 공간이 없는 경우 소켓이 차단 해제 모드에 배치되지 않는 한 전송이 차단됩니다.

참고

애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.

적용 대상

Send(Byte[], SocketFlags)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

지정된 Socket를 사용하여 데이터를 연결된 SocketFlags에 보냅니다.

public:
 int Send(cli::array <System::Byte> ^ buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Send (byte[] buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : byte[] * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffer As Byte(), socketFlags As SocketFlags) As Integer

매개 변수

buffer
Byte[]

전송할 데이터를 포함하는 형식 Byte의 배열입니다.

socketFlags
SocketFlags

SocketFlags 값의 비트 조합입니다.

반환

Socket에 보낸 바이트 수입니다.

예외

buffer이(가) null인 경우

소켓에 액세스하는 동안 오류가 발생했습니다.

Socket이 닫혔습니다.

예제

다음 코드 예제에서는 연결된 Socket에 데이터를 보내는 방법을 보여 줍니다.

// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
int SendReceiveTest2( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int byteCount = server->Send( msg, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
public static int SendReceiveTest2(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);

        // Get reply from the server.
        byteCount = server.Receive(bytes, SocketFlags.None);
        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer and socket flags.
Public Shared Function SendReceiveTest2(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, SocketFlags.None)
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest2

설명

Send 또는 메서드에 설정된 원격 호스트에 데이터를 동기적으로 보내고 성공적으로 전송된 ConnectAccept 바이트 수를 반환합니다. 메서드는 Send 연결 지향 프로토콜과 연결 없는 프로토콜 모두에 사용할 수 있습니다.

이 오버로드에는 보내려는 데이터와 의 비트 조합 SocketFlags이 포함된 버퍼가 필요합니다. 버퍼 오프셋의 기본값은 0이고 보낼 바이트 수는 버퍼의 크기로 기본값을 지정합니다. 플래그를 DontRoute 매개 변수 값으로 socketflags 지정하면 보내는 데이터가 라우팅되지 않습니다.

연결 없는 프로토콜을 사용하는 경우 이 메서드를 호출하기 전에 를 호출 Connect 해야 합니다. 또는 Send 가 throw SocketException됩니다. 연결 지향 프로토콜을 사용하는 경우 를 사용하여 Connect 원격 호스트 연결을 설정하거나 를 사용하여 Accept 들어오는 연결을 수락해야 합니다.

연결 없는 프로토콜을 사용 중이며 여러 호스트에 데이터를 보내려는 경우 메서드를 SendTo 사용해야 합니다. 메서드를 SendTo 사용하지 않는 경우 각 를 호출하기 전에 메서드를 Connect 호출해야 합니다 Send. 를 사용하여 기본 원격 호스트Connect를 설정한 후에도 를 사용할 SendTo 수 있습니다. 에 대해 다른 호출을 하여 를 호출 Send 하기 전에 기본 원격 호스트를 변경할 수도 있습니다 Connect.

연결 지향 프로토콜 Send 을 사용하는 경우 를 사용하여 Socket.SendTimeout제한 시간을 설정하지 않는 한 버퍼의 모든 바이트가 전송될 때까지 가 차단됩니다. 제한 시간 값이 초과된 경우 호출은 Send 을 throw합니다 SocketException. 비블로킹 모드 Send 에서는 버퍼의 바이트 수보다 적게 보내는 경우에도 가 성공적으로 완료될 수 있습니다. 애플리케이션은 전송 된 바이트 수를 추적 하 고 애플리케이션에서 요청 된 바이트 수를 보낼 때 까지는 작업을 다시 시도를 합니다. 또한 보내는 데이터가 네트워크에 즉시 표시된다는 보장은 없습니다. 네트워크 효율성을 높이기 위해 기본 시스템은 상당한 양의 발신 데이터가 수집될 때까지 전송을 지연할 수 있습니다. 메서드를 Send 성공적으로 완료하면 기본 시스템에 네트워크 전송에 대한 데이터를 버퍼링할 수 있는 공간이 있음을 의미합니다.

참고

버퍼의 크기가 기본 서비스 공급자의 최대 패킷 크기를 초과하지 않는지 확인해야 합니다. 이 경우 데이터그램은 전송 Send 되지 않고 을 throw합니다 SocketException. 를 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명 은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

참고

전송이 성공적으로 완료되었다고 해서 데이터가 성공적으로 전달되었음을 의미하지는 않습니다. 전송 시스템 내에서 전송할 데이터를 저장할 수 있는 버퍼 공간이 없는 경우 소켓이 차단 해제 모드에 배치되지 않는 한 전송이 차단됩니다.

참고

애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.

추가 정보

적용 대상

Send(ReadOnlySpan<Byte>, SocketFlags)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

지정된 Socket를 사용하여 데이터를 연결된 SocketFlags에 보냅니다.

public:
 int Send(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Send (ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags) As Integer

매개 변수

buffer
ReadOnlySpan<Byte>

보낼 데이터가 들어 있는 바이트의 범위입니다.

socketFlags
SocketFlags

보내기 및 받기 동작을 지정하는 열거형 값의 비트 조합입니다.

반환

Socket에 보낸 바이트 수입니다.

예외

소켓에 액세스하는 동안 오류가 발생했습니다.

Socket이 닫혔습니다.

추가 정보

적용 대상

Send(Byte[])

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

연결된 Socket에 데이터를 보냅니다.

public:
 int Send(cli::array <System::Byte> ^ buffer);
public int Send (byte[] buffer);
member this.Send : byte[] -> int
Public Function Send (buffer As Byte()) As Integer

매개 변수

buffer
Byte[]

전송할 데이터를 포함하는 형식 Byte의 배열입니다.

반환

Socket에 보낸 바이트 수입니다.

예외

buffer이(가) null인 경우

소켓에 액세스하는 동안 오류가 발생했습니다.

Socket이 닫혔습니다.

예제

다음 코드 예제에서는 연결된 Socket에 데이터를 보내는 방법을 보여 줍니다.

// Displays sending with a connected socket
// using the overload that takes a buffer.
int SendReceiveTest1( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int byteCount = server->Send( msg );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return ( e->ErrorCode );
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer.
public static int SendReceiveTest1(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int i = server.Send(msg);
        Console.WriteLine("Sent {0} bytes.", i);

        // Get reply from the server.
        i = server.Receive(bytes);
        Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer.
Public Shared Function SendReceiveTest1(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim i As Integer = server.Send(msg)
        Console.WriteLine("Sent {0} bytes.", i)
        
        ' Get reply from the server.
        i = server.Receive(bytes)
        Console.WriteLine(Encoding.UTF8.GetString(bytes))
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest1

설명

Send 또는 메서드에 지정된 원격 호스트에 데이터를 동기적으로 보내고 성공적으로 전송된 ConnectAccept 바이트 수를 반환합니다. Send 는 연결 지향 프로토콜과 연결 없는 프로토콜 모두에 사용할 수 있습니다.

이 오버로드에는 보내려는 데이터가 포함된 버퍼가 필요합니다. 기본값은 SocketFlags 0이고, 버퍼 오프셋은 기본값은 0이고, 보낼 바이트 수는 버퍼의 크기로 기본값을 지정합니다.

연결 없는 프로토콜을 사용하는 경우 이 메서드를 호출하기 전에 를 호출 Connect 해야 합니다. 또는 Send 가 throw SocketException됩니다. 연결 지향 프로토콜을 사용하는 경우 를 사용하여 Connect 원격 호스트 연결을 설정하거나 를 사용하여 Accept 들어오는 연결을 수락해야 합니다.

연결 없는 프로토콜을 사용 중이며 여러 호스트에 데이터를 보내려는 경우 메서드를 SendTo 사용해야 합니다. 메서드를 SendTo 사용하지 않는 경우 에 대한 각 호출 전에 를 호출 Connect 해야 합니다 Send. 를 사용하여 기본 원격 호스트Connect를 설정한 후에도 를 사용할 SendTo 수 있습니다. 에 대해 다른 호출을 하여 를 호출 Send 하기 전에 기본 원격 호스트를 변경할 수도 있습니다 Connect.

연결 지향 프로토콜 Send 을 사용하는 경우 를 사용하여 Socket.SendTimeout제한 시간을 설정하지 않는 한 버퍼의 모든 바이트가 전송될 때까지 가 차단됩니다. 제한 시간 값이 초과된 경우 호출은 Send 을 throw합니다 SocketException. 비블로킹 모드 Send 에서는 버퍼의 바이트 수보다 적게 보내는 경우에도 가 성공적으로 완료될 수 있습니다. 애플리케이션은 전송 된 바이트 수를 추적 하 고 애플리케이션에서 버퍼의 바이트를 보낼 때 까지는 작업을 다시 시도를 합니다. 또한 보내는 데이터가 네트워크에 즉시 표시된다는 보장은 없습니다. 네트워크 효율성을 높이기 위해 기본 시스템은 상당한 양의 발신 데이터가 수집될 때까지 전송을 지연할 수 있습니다. 메서드를 Send 성공적으로 완료하면 기본 시스템에 네트워크 전송에 대한 데이터를 버퍼링할 수 있는 공간이 있음을 의미합니다.

참고

를 수신하는 SocketException경우 속성을 사용하여 SocketException.ErrorCode 특정 오류 코드를 가져옵니다. 이 코드를 가져온 후 오류에 대한 자세한 설명 은 Windows 소켓 버전 2 API 오류 코드 설명서를 참조하세요.

참고

전송이 성공적으로 완료되었다고 해서 데이터가 성공적으로 전달되었음을 의미하지는 않습니다. 전송 시스템 내에서 전송할 데이터를 저장할 수 있는 버퍼 공간이 없는 경우 소켓이 차단 해제 모드에 배치되지 않는 한 전송이 차단됩니다.

참고

애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework 네트워크 추적을 참조하세요.

추가 정보

적용 대상