"견디지 않아도 괜찮아"
익숙해지는 것 vs 힘들지 않은 것
물론 분명 다르다.
SOCKET sock = socket(PF_INET, SOCK_STREAM, 0);
int send_buf = 500;
int rcv_buf = 1000;
int state = setsockopt(sock, SOL_SOCKET, SO_RCVBUF, (char*)&rcv_buf, sizeof(rcv_buf)); if(state) errorhandling("setsockopt() error"); state = setsockopt(sock, SOL_SOCKET, SO_SNDBUF, (char*)&send_buf, sizeof(send_buf));
if(state) errorhandling("setsockopt() error");
|
int sock;
int flag = 1; // 네이글 알고리즘 off
sock = open(...);
if ( setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (char *)&flag, sizeof(int)) < 0)
{
printf("setsockopt error\n");
....
}
|
SCOKET hSocket;
int nErrorCode; hSocket = socket(AF_INET,SOCK_STREAM,0); ~~~~
nErrorCode = connect(~~~~~~);
~~~ // RECEIVE & SEND TIMEOUT 설정법 // hSocket이 블럭킹상태(Blocking) 일경우 해당된다. 논 블럭킹 상태(None-Blocking) 이면 recv에서 SOCKET_ERROR를 반환하고 //WSAGetLastError()로 확인 하면 WSAEWOULDBLOCK를 반환 한다. //WSAEWOULDBLOCK이 에러가 아니고, 다른 에러 이면 에러 코드를 참조 하여 에러 처리를 한다. // Receive Time Out Value : 3000 (약 3초) int nTimeOutValue = 3000; nErrorCode = setsockopt(hSocket, SOL_SOCKET, SO_RCVTIMEO,(const char*)&nTimeOutValue,sizeof(nTimeOutValue)); if(SOCKET_ERROR == nErrorCode){ // 에러 처리 }
nErrorCode = setsockopt(hSocket, SOL_SOCKET, SO_SNDTIMEO,(const char*)&nTimeOutValue,sizeof(nTimeOutValue));
if(SOCKET_ERROR == nErrorCode) { // 에러 처리 } nErrorCode = send(hSocket,버퍼,전송할 버퍼크기, 0); ~~~ nErrorCode = recv(hSocket,버퍼, 버퍼크기, 0); ~~~ |
LINGER opt = {onoff, linger}; // 값을 설정
setsockopt(socket, SOL_SOCKET, SO_LINGER, (char *)&opt, sizeof(opt));
|
bool reuseflag = true;
setsockop(listen_sock, SOL_SOCKET, SO_REUSEADDR, (char *)&reuseflag, sizeof(reuseflag));
|
// serverside
memset(&serverAddr, 0, sizeof(serverAddr));
serverAddr.sin_family = AF_INET;
serverAddr.sin_addr.s_addr = inet_addr(szServerAddress);
serverAddr.sin_port = htons(nPort); // 포트는 serverside 와 clientside 모두 통일
state = setsockopt(hSock, SOL_SOCKET, SO_BROADCAST, (char *)&serverAddr, sizeof(serverAddr));
|