2014-07-16 2 views
0

내 응용 프로그램에서는 서버 측 (서버로 사용하는 작은 장치)과 comunicate해야합니다.iOS : 소켓에서 읽기 및 쓰기 (TCP 연결)

내 기본 동작은 17 바이트 시퀀스를 작성하고 그 결과를 읽는 것입니다. GCDAsyncSocket을 사용했지만 좋은 결과를 얻지 못했습니다.

이 작업을 효율적으로 수행 할 수있는 방법이 있는지 물어보고 싶습니다.

+0

언제나 이것을 위해 C를 사용할 수 있습니다. – Jeepston

답변

0

주 스레드에서는 실행하지 마십시오. 사용자 사례가 간단하기 때문에 간단한 예제를 작성합니다. 그 방법으로 테스트하지 않습니다 ...

int sock = socket(AF_INET, SOCK_STREAM, 0) ; 
struct sockaddr_in server_addr ; 
bzero(&server_addr, sizeof(server_addr)) ; 
server_addr.sin_port = htons(1025) ; 
server_addr.sin_addr.s_addr = inet_addr("192.168.1.5") ; 
server_addr.sin_family = AF_INET ; 

int i = connect(sock, (const struct sockaddr *)&server_addr, sizeof(server_addr)) ; 
if (i >= 0) { 
    char writeBuf[17] = "123456789" ; 
    long w = write(sock, writeBuf, 17) ; 
    if (w > 0) { 
     char bufferRead[1024] ; 
     long r = read(sock, bufferRead, sizeof(bufferRead)) ; 
     if (r > 0) { 
      // success 
     } 
    } 
} 
close(sock) ; 
+0

괜찮습니까? 귀하의 대답은 너무 빨라서 잘 작동한다고 확신합니다.하지만 볼 문서가 있습니까? GCDAsyncSocket을 사용하여 동일한 작업을 수행 할 수 있습니까? – CrazyDev

+0

@nazz_areno 책 '유닉스 네트워크 프로그래밍, 볼륨 1'을 읽어 보길 권합니다.이 책은 소켓으로 프로그래밍하는 방법에 대해 이야기하는 아주 좋은 책입니다. 당신은'GCDAsyncSocket'을 사용하여 동일한 작업을 수행 할 수 있으며 서버와 복잡한 상호 작용을하는 경우'GCDAsyncSocket'을 사용하는 것이 좋습니다. – KudoCC

관련 문제