- 프로세스 : 메모리에 적재된 현재 실행중인 프로그램
- 스레드 : 프로세스 내에서 명령들의 실행 흐름 단위
public static void Run() {
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("192.168.31.1"), 17841);
serverSocket.Bind(endPoint);
serverSocket.Listen(1000);
while (true)
{
Socket clientSocket = serverSocket.Accept();
Console.WriteLine(clientSocket.RemoteEndPoint);
// 다음 클라이언트 소켓을 받으려면 Accept를 호출해야 되는데
// 아래 while문이 끝나기 전까지는 다음 accept 함수를 호출할 수 없다.
while (true) {
byte[] buffer = new byte[256];
int n1 = clientSocket.Receive(buffer);
if (n1 < 1) {
clientSocket.Dispose();
break;
}
}
}
}
public static void RunWithThread()
{
Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("192.168.31.1"), 17841);
serverSocket.Bind(endPoint);
serverSocket.Listen(1000);
//while문을 thread에 할당해보자.
while (true) {
Socket clientSocket = serverSocket.Accept();
Console.WriteLine(clientSocket.RemoteEndPoint);
// Receive와 Accept가 쓰레드가 다르므로 동시에 실행
Thread t1 = new Thread(() => {
while (true) {
byte[] buffer = new byte[256];
int n1 = clientSocket.Receive(buffer);
if (n1 < 1) {
clientSocket.Dispose();
break;
}
}
});
t1.Start();
}
}
'웹 개발 > 네트워크' 카테고리의 다른 글
[C#] 비동기 프로그래밍_스레드 동기 (0) | 2023.09.20 |
---|---|
[C#] Nagle 알고리즘 (0) | 2023.09.18 |
[C#] SO_LINGER (0) | 2023.09.17 |
[C#] TCP/IP 소켓 프로그래밍_우아한 종료 (0) | 2023.08.29 |
[C#] TCP/IP 소켓 프로그래밍_Half-close (0) | 2023.08.15 |