tcp 5

c# SocketAsyncEvent Server

System.Net.Sockets.SocketAsyncEventArgs 클래스를 사용해서 서버 구성시 좋은 성능을 낼 수 있다.내부적으로 윈도우 계열은 IOCP를 사용하고, 리눅스 계열은 EPOLL을 사용한다. 간단한 에코 서버를 작성했으며 수신된 패킷을 클라이언트에 전송 시 Socket.Send 메서드를 사용한다.클라이언트에 패킷 전송 시에도 SocketAsyncEventArgs 사용하면 좀 더 나은 성능을 낼 수 있으며 SendingQueue도 함께 구현해야 한다. 아래는 작성된 소스 코드이다.using System.Net.Sockets;using System.Net;using System.Collections.Concurrent;namespace SocketAsyncEventServerSample;..

c# .net 2024.11.09

golang tcp socket server

golang 서버 구성시 저 사양 서버 머신에서 10k ~ 15k 동시 접속자 처리도 가능하다.수신 패킷 단편화 처리, 접속 클라이언트 관리, 파일 로그 등등 추가 기능을 포함하면 실무에서도 사용 가능하다.개발툴은 vscode를 사용했다. 프로젝트 디렉터리 구조더보기tcp_socket_server.code-workspaceserver - main.go - client.go - channelGroup.go - go.modclient - main.go - client.go - go.mod tcp_socket_server.code-workspace{ "folders": [ { "path": "./server" }, { "path": "./client" } ], "settings": { "wor..

golang 2024.07.08

java 21 Virtual Thread Tcp Socket Server

Java Virtual Thread Tcp Socket Server​java 11 소켓 클래스 java.net.SocketInputStreamjava 21 소켓 클래스 sun.nio.ch.NioSocketImpl​JEP 353 (Reimplement the legacy Socket API) https://openjdk.org/jeps/353에서 Socket API들을 재구현함으로써 코드의 변경 없이 가상 스레드를 사용할 수 있도록 하였다.​golang의 tcp 소켓 서버의 net poll 방식 구현과 유사한 방식으로 구현하였다.​java 1.4 버전 이전의 tcp io socket server와 다른 부분은 연결 클라이언트 처리를 가상 스레드로 한다.​연결 클라이언트 관리, 단편화된 패킷 수신 처리, 버..

java 2024.06.30