美文网首页iOS
Socket聊天

Socket聊天

作者: subject_2619 | 来源:发表于2017-03-23 14:59 被阅读15次

    Socket-“套接字”给我们提供了发送和接收信息的接口,通过这个接口能够实现客户端和服务端的通信。Socket是对TCP/IP的封装,方便了程序员的使用。

    1.首先,我们要建立一个Socket对象,通过如下的函数实现:

    int socket(int domain,int type,int protocal);

    domain:协议族或者协议域,决定Socket的地址类型;type:Socket的类型;protocal:指定的协议,常用的有TCP,UDP传输协议。返回值大于0的时候,表示创建成功。

    2.建立连接

    int PASCAL FAR connect(SOCKET s,const struct sockaddr FAR *name,int namelen);

    SOCKET s:客户端Socket;第二个参数指向一个数据结构的指针,它包括路目的地的端口和IP;第三个参数:该结构体的长度。返回值为0表示连接成功。

    3.接下来就是发送和接收指令:

    ssize_t send(int,const void *,size_t,int)

    第一个参数表示Socket,第二个参数表示发送内容的地址,第三个参数表示发送内容的长度,最后一个为标志位。

    ssize_t send(int,void *,size_t,int)

    参数和发送差不多,第二个参数表示接受内容的缓冲地址。

    4.断开连接

    int close(int)

    Demo如下:

    //连接到服务器

    -(BOOL)connentToHost:(NSString*)host port:(int)port{

    //创建Socket对象

    self.clientSocket=socket(AF_INET,SOCK_STREAM,0);

    //端口和IP地址的结构体

    structsockaddr_inseverAddress;

    severAddress.sin_family=AF_INET;

    severAddress.sin_addr.s_addr=inet_addr(host.UTF8String);

    severAddress.sin_port=htons(port);

    return(connect(self.clientSocket, (conststructsockaddr*)&severAddress,sizeof(severAddress))==0);

    }

    //发送和接收

    -(NSString*)sendAndRecv:(NSString*)message

    {

    ssize_tsendLen=send(self.clientSocket, message.UTF8String,strlen(message.UTF8String),0);

    //缓冲

    uint8_tbuffer[1024];

    ssize_trecLen=recv(self.clientSocket, buffer,sizeof(buffer),0);

    NSLog(@"buffer=%hhu",buffer[0]);

    NSData*data=[NSDatadataWithBytes:bufferlength:recLen];

    NSString*str=[[NSStringalloc]initWithData:dataencoding:NSUTF8StringEncoding];

    returnstr;

    }

    //单击连接

    -(void)conn{

    BOOLresult=[selfconnentToHost:self.hostText.textport:self.portText.text.intValue];

    self.recText.text=result?@"成功":@"失败";

    }

    //单击发送

    -(void)send{

    self.recText.text=[selfsendAndRecv:self.msgText.text];

    }

    -(void) disconnection{

    close(self.clientSocket);

    }

    打开终端,调试如下:

    相关文章

      网友评论

        本文标题:Socket聊天

        本文链接:https://www.haomeiwen.com/subject/poxvgttx.html