inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Lập trình socket C# TCP/IP

Đăng nhập

에러에 관한 질문입니다.

1191

201852916875

1 câu hỏi đã được viết

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

Câu trả lời 1

-1

erickwon

원인은 다양합니다.

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

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

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

19강 15_2) 템블릿에 List가 없는경우는 어떻게 해야되나요?

0

16

1

Spider와 Monster 구현 방식을 구분한 이유

1

16

1

Sprute Sheet에 대해서.

0

14

1

15강 12-3) 값 제출후 mysql 저장이 안됩니다.

0

18

2

혹시 언리얼 CEF기반 UI에서 한글 입력 오류 해결하신분??

0

30

2

ResourceManager 클래스 관련 질문

1

35

2

크레딧 충전

0

42

1

수업자료 관련

0

28

1

첨부된 수업자료와 강의 내용이 다릅니다.

0

51

2

몬스터 HP 게이지바 이동

0

23

1

비주얼 스튜디오 2026

0

43

2

C#에서의 RAII

0

67

3

public string Title { get; set; } 에서 WFO1000 오류가납니다.

0

45

1

44번 강의 "AWS VPC와 Gateway endpoint 구성"에서 질문 드립니다.

0

39

2

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

0

328

2

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

0

116

1

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

0

133

1

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

1

396

1

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

0

304

1

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

0

1786

1

예제소스 제공 원합니다.

0

378

1

5:34 질문 있습니다.

0

486

1

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

0

595

1

9:45 질문 있습니다.

0

582

1