iOS:在套接字中读写(tcp连接)

Posted

技术标签:

【中文标题】iOS:在套接字中读写(tcp连接)【英文标题】:iOS: read and write in a socket (tcp connection) 【发布时间】:2014-07-16 14:12:47 【问题描述】:

在我的应用程序中,我应该与服务器端(充当服务器的小设备)进行通信。

我的主要操作是写入一个 17 字节的序列并读取结果。我使用了 GCDAsyncSocket,但它并没有给我带来好的结果。

我想问你是否有一种方法可以有效地完成这项工作。

【问题讨论】:

你总是可以使用纯 C 语言。 【参考方案1】:

不要在主线程上这样做。由于您的用户案例很简单,因此我编写了一个简单的示例。顺便说一下,我不测试...

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] = "12345678901234567" ;
    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) ;

【讨论】:

好的,你的回答太快了,我相信它可以正常工作......但是你有一些文档要查看吗?我可以对 GCDAsyncSocket 做同样的事情吗? @nazz_areno 我建议你读一本书Unix Network Programming, Volume 1,这是一本非常好的书,它讲述了如何使用套接字进行编程。你可以用GCDAsyncSocket做同样的事情,如果你和服务器有复杂的交互,你最好使用GCDAsyncSocket

以上是关于iOS:在套接字中读写(tcp连接)的主要内容,如果未能解决你的问题,请参考以下文章

I/O多路复用-EPOLL探索

TCP 环回连接与 Unix 域套接字性能

TCP,UDP协议下的socket通信

tcp套接字编程

数据的连接与断开(TCP三次握手和四次握手)

TCP编程(字节读写)- Socket 网络应用