inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

C# TCP/IP 소켓 프로그래밍

로그인

에러에 관한 질문입니다.

1175

딱딱한바게트

작성한 질문수 1

0

************** 예외 텍스트 **************
System.Net.Sockets.SocketException (10061): 대상 컴퓨터에서 연결을 거부했으므로 연결하지 못했습니다.
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
at System.Threading.Tasks.ValueTask.ValueTaskSourceAsTask.<>c.<.cctor>b__4_0(Object state)

--- End of stack trace from previous location ---
at Client.Singleton.ConnectAsync() in P:\Chat\Client\Singleton.cs:line 36
at Client.LoginForm.btn_login_Click(Object sender, EventArgs e) in P:\Chat\Client\LoginForm.cs:line 20
at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_0(Object state)

 16:45초 로그인 할 때 이렇게 뜨네요 ㅠㅠ

 

해당 라인 가보면
LoginForm.cs
await Singleton.Instance.ConnectAsync();

 

Singleton.cs

await Socket.ConnectAsync(endPoint);

입니다. 아이피와 포트도 제대로 입력해주었습니다.

 

강사님이 올려주신 파일 통째로 받아서 해봤는데도 동일한 오류가 발생합니다.

 

어떻게 해결해야하나요?


코드 첨부합니다.


LoginForm.cs

using Core;

namespace Client;

public partial class LoginForm : Form

{

public LoginForm()

{

InitializeComponent();

}

private async Task btn_login_Click(object sender, EventArgs e)

{

if (string.IsNullOrEmpty(tbx_id.Text) || string.IsNullOrEmpty(tbx_nickname.Text))

{

MessageBox.Show("입력하세요");

return;

}

await Singleton.Instance.ConnectAsync();

LoginRequestPacket packet = new LoginRequestPacket(tbx_id.Text, tbx_nickname.Text);

await Singleton.Instance.Socket.SendAsync(packet.Serialize(), System.Net.Sockets.SocketFlags.None);

Singleton.Instance.Id = tbx_id.Text;

Singleton.Instance.Nickname = tbx_nickname.Text;

RoomList roomList = new RoomList();

roomList.ShowDialog();

}

}


Singleton.cs

using System.Net;

using System.Net.Sockets;

namespace Client;

/// <summary>

/// 언제 어디서나 접근할 수 있는 객체.

/// 이 객체는 반드시 1개만 존재해야 한다.

/// </summary>

internal class Singleton

{

public string Id { get; set; } = null!;

public string Nickname { get; set; } = null!;

public Socket Socket { get; } = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

private static Singleton? instance;

public static Singleton Instance

{

get

{

if (instance == null)

instance = new Singleton();

return instance;

}

}

private Singleton()

{

}

public async Task ConnectAsync()

{

IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("192.168.219.106"), 20001);

await Socket.ConnectAsync(endPoint);

ThreadPool.QueueUserWorkItem(ReceiveAsync, Socket);

}

private async void ReceiveAsync(object? sender)

{

Socket socket = (Socket)sender!;

byte[] headerBuffer = new byte[2];

while (true)

{

#region 헤더버퍼 가져옮

int n1 = await socket.ReceiveAsync(headerBuffer, SocketFlags.None);

if (n1 < 1)

{

Console.WriteLine("client disconnect");

socket.Dispose();

return;

}

else if (n1 == 1)

{

await socket.ReceiveAsync(new ArraySegment<byte>(headerBuffer, 1, 1), SocketFlags.None);

}

#endregion

#region 데이터버퍼 가져옮

short dataSize = IPAddress.NetworkToHostOrder(BitConverter.ToInt16(headerBuffer));

byte[] dataBuffer = new byte[dataSize];

int totalRecv = 0;

while (totalRecv < dataSize)

{

int n2 = await socket.ReceiveAsync(new ArraySegment<byte>(dataBuffer, totalRecv, dataSize - totalRecv), SocketFlags.None);

totalRecv += n2;

}

#endregion

}

}

}

 

C# tcpsocket tcpip

답변 1

-1

에릭권

원인은 다양합니다.

서버를 키지 않았다던지, 정말로 IP나 Port가 잘못됐다던지,

방화벽 때문에 접속이 안된다던지,

구글링 또는 ChatGPT 한테 물어봐서 이런류의 에러도 해결해보는 능력을 가지시는것도 좋을거 같아요.

코드 관련 질문

0

14

2

섹션7 수업자료 업로드 부탁드립니다.

0

19

2

Dictionary Key를 int에서 string으로 변경한 이유에 대한 문의

0

17

1

프로젝트 질문 문의

0

45

1

UI 기능 관련 질문이 있습니다!

0

37

2

TLS 질문드립니다.

0

43

2

SpinLock과 컨텍스트스위칭에 대해 질문 남겨요.

0

46

2

픽셀 좌표 스크린 좌표

0

33

0

Locomotion랑 Turn 이 꼭 부모 자식 관계일 필요가 있나요?

0

23

1

Rider대신 VS를 써도 괜찮나요?

0

115

2

Claude Code Pro구독하고 있는 상태에서 크레딧 결제, 사용문의

0

207

2

LobbyUIController의 백키가 사라졌는데 왜그런건가요?

0

40

2

무조건 타이틀 씬부터 시작해야하나요?

0

39

1

BaseUI, UIManager

0

50

3

프로젝트가 더 이상 지원되지 않는 .NET 6.0을 대상으로 할 때

0

308

2

Tap강의에서 6분9초에 ReceiveAsync에 매개변수 e가 필요하다는 에러

0

106

1

EAP강의에서 어떻게 여러개 클라이언트를 띄우는지 궁금합니다

0

121

1

22:38 메세지 박스가 안뜨는 문제

1

383

1

에러 관련하여 질문 있습니다.

0

293

1

크롬으로 서버에 접속은 되지만 response되지 않는 이유가 궁금합니다

0

1765

1

예제소스 제공 원합니다.

0

366

1

5:34 질문 있습니다.

0

469

1

방만들기, 방 목록 새로고침 강의 중 크로스스레드 문제

0

577

1

9:45 질문 있습니다.

0

576

1