Shellbt's Blog

2010/02/10

[qt4] qPrintable(QString &str)

밑에 신청: qt4, 개발 & 코딩질, 팁 & 테크 — shellbt @ 5:18 오후
Tags: , , ,

리턴값이 const char *이다.
한마디로 볼 수 있는 데이터로 만들어 준다는 얘기지..

QString을 사용할 때, str.toLocal8Bit().constData()을 사용하는 것과 동일한 야그..

Network 소켓 통신 관련 함수 정리

밑에 신청: Uncategorized — shellbt @ 3:24 오후

1. 소켓의 구성
서버

기본적인 서버 함수 호출 순서
socket() (소켓 생성) –> bind() (주소할당) –> listen() (요청가능상태) –> accept() (요청수락) –>

read() & write() (데이터송수신) –> close() (연결종료)

1. 소켓 생성.

Network Function setsockopt

setsockopt

setsockopt 함수는 소켓 옵션을 설정하는 함수입니다.

int setsockopt (
SOCKET
s,
int
level,
int
optname,
const char FAR *
optval,
int
optlen
);

Parameters

s
[입력] 대상 소켓의 기술자(descriptor)를 명시합니다.

level
[입력] 소켓 옵션 레벨이 정의 되며, SOL_SOCKET 과 IPPROTO_TCP 중 하나가 될 수 있습니다.

optname
[입력] 셋팅 하기위한 소켓옵션 값입니다.

optval
[입력] 검색된 옵션을 저장 하기위한 데이터 버퍼를 포인트 합니다.

optlen
[입력] optval 매개변수 버퍼의 크기

Remarks

setsockopt 함수는 지정된 소켓의 옵션을 특정한 형태(type), 상태(state)로 결합하기 위해서 지정한 소켓옵션 값을 셋팅하는 함수입니다. 비록 여러 프로토콜 레벨로의 소켓 옵션이 존재 할 순 있다 하더라도, 가장 우선하는 레벨이 존재하게 됩니다. 옵션은 소켓 연산에 영향을 미칩니다. 예를들어 발송된 데이터(OOB 데이터를 예로 들 수 있습니다) 를 일반 데이터 스트림으로 수신했을때나, 소켓으로 브로드캐스트(broadcast) 메세지를 전송할때 영향을 미치게 됩니다.

이 함수에서 사용 할 수 있는 두가지 형태의 소켓옵션이 있습니다. 활성화 또는 비활성화 시키기 위한 Boolean 옵션과, 정수형(integer) 또는 구조체를 요구하는 옵션이 있습니다. Boolean 옵션을 활성화 하기 위해서 optval 매개변수는 0이 아닌 정수를 포인트 하고, 비활성화 하기 위해서 0을 포인트 합니다. optlen 매개변수는 Boolean 옵션에 대해서는 sizeof(int)로 설정 해야만 합니다. 다른 옵션들에 대해서, optval 매개변수는 설정하고자 하는 정수(integer)나 구조체를 넘겨야 하고, optlen 매개변수는 정수(integer) 또는 구조체의 길이를 넘겨야 합니다. 아래에 setsockopt 함수에서 사용 할 수 있는 옵션들을 간단한 설명과 함께 나열 해 보았습니다.

level = SOL_SOCKET

옵션값(Value) 데이터형태(Type) 의미(Meaning)
SO_BROADCAST BOOL 소켓으로 브로드캐스트(broadcast) 메세지를 전송 할 수 있도록 합니다.
SO_DEBUG BOOL 디버깅 정보를 레코딩 합니다.
SO_DONTLINGER BOOL 소켓을 종료(close)할때 보내지지 않은 데이터를 보내기위해서 블럭킹 상태가 되지 않도록 합니다. 이 옵션을 셋팅하는 것은 LINGER 구조체의 멤버중 l_onoff를 0으로 셋팅하고 SO_LINGER 옵션을 셋팅 했을때와 같은 효력을 발휘합니다.
SO_DONTROUTE BOOL 라우팅 하지 않고, 직접 인터페이스로 보냅니다.
SO_GROUP_PRIORITY int 차후에 소켓그룹을 사용하기위해 예약 되어있습니다. 소켓그룹의 일부분인 소켓을 만들기위해 관련된 우선사항을 명시합니다.
(우아아아악~ 정말 해석 못해 먹겠네여… 원문을 첨가 하겠습니다)
Reserved for future use with socket groups. Specify the relative priority to be established for sockets that are part of a socket group.
SO_KEEPALIVE BOOL Keepalives를 전송합니다.
SO_LINGER struct LINGER 아직 전송되지 않은 데이터가 있을 경우 소켓을 종료(close)할때 대기합니다.
SO_OOBINLINE BOOL 일반 데이터 스트림(normal data stream)으로 out-of-band 데이터를 수신합니다.
SO_RCVBUF int 데이터를 수신하기 위한 총 버퍼공간을 명시합니다. 요놈은 SO_MAX_MSG_SIZE 나, TCP Window의 크기와 상관이 없습니다.
SO_REUSEADDR BOOL 이미 사용되고 있는 어드레스를 바인드 할 수 있도록 합니다.
SO_SNDBUF int 데이터를 전송하기 위한 총 버퍼공간을 명시합니다. 요놈은 SO_MAX_MSG_SIZE 나, TCP Window의 크기와는 상관이 없습니다.

level = IPPROTO_TCP

TCP_NODELAY BOOL 전송합병(send coalescing)을 위해 Nagle 알고리즘을 비 활성화 합니다.

Return Values

에러가 발생하지 않으면, setsockopt 함수는 0을 반환합니다. 에러가 발생하면, SOCKET_ERROR을 반환하면 WSAGetLastError 함수를 이용해서 특정 에러 코드를 얻어낼 수 있습니다.

Error Codes

WSANOTINITIALISED 이 함수를 사용하기 전에 성공적인 WSAStartup 함수의 호출이 없었습니다.
WSAENETDOWN 네트웍 서브 시스템에 에러가 발생했습니다.
WSAEFAULT optval 또는 optlen 매개변수 중의 하나가 올바르지 않거나 optlen 매개변수의 값이 너무 작습니다.
WSAEINPROGRESS 블럭킹 윈속 v1.1 이 현재 진행 중이거나, 서비스 프로바이더가 콜백 함수를 여전히 처리하고 있습니다.
WSAEINVAL level 매개변수가 잘못됐거나, 알 수 없는 값 입니다.
WSAENETRESET SO_KEEPALIVE가 설정 되었을때, 접속이 타입아웃 되었습니다.
WSAENOPROTOOPT 알 수 없는 옵션이거나, 지원지지 않는 옵션을 사용 했습니다.
WSAENOTCONN SO_KEEPALIVE가 설정 되었을때, 접속이 리셋 되었습니다.
WSAENOTSOCK 기술자(descriptor)가 소켓 기술자가 아닙니다.

QuickInfo

Windows NT : 사용가능
Windows : 사용가능
Windows CE : 버젼 1.0 그리고 그이후의 버젼에서 사용가능
Header :
Win16/32 : winsock.h
Win32-II : winsock2.h
Import Library :
Win16 : winsock.lib
Win32 : wsock32.lib
Win32-II : ws2_32.lib

See Also

overview, bind, getsockopt, ioctlsocket, socket, WSAAsyncSelect, WSAEventSelect

2010/02/09

[맛집] 온누리에 돈까스

밑에 신청: 맛집 — shellbt @ 9:24 오후
Tags: , , , ,

대왕돈까스

큰 지도에서 맛집 보기

[OpenOffice] 스프레드시트에서 열(행) 고정하기

스프레드 시트에서 열이 많거나, 행이 많아서 구분명을 볼 수 없을 경우 사용하면 좋다

고정된 영역에 두려는 행의 아래쪽 행이나 열의 오른쪽 열을 선택하고, 창 -> 고정을 선택해 주면 된다.

고정 기능을 해제하고 싶으면, 창->고정을 다시 선택해 주면 된다.

다음 페이지 »

Blog at WordPress.com.