服务端:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
#import "ViewController.h" #import <sys/socket.h> #import <netdb.h> @interface ViewController () @end #define SOCKET int #define INVALID_SOCKET -1 #define SOCKET_ERROR -1 @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. SOCKET Socket_Client; //创建 socket Socket_Client = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (Socket_Client == INVALID_SOCKET) { printf("socket error"); return; } struct sockaddr_in sockaddr; //初始化地址信息 sockaddr.sin_family = AF_INET; sockaddr.sin_port = htons(8000); //8000端口 sockaddr.sin_addr.s_addr = INADDR_ANY; //表示所有可用的地址 //绑定 socket if (bind(Socket_Client,(struct sockaddr*)&sockaddr,sizeof(sockaddr)) == SOCKET_ERROR) { printf("bind error"); return; } //监听 if (listen(Socket_Client,5) == SOCKET_ERROR) { printf("listen error"); return; } SOCKET Socket_Server; //客户端 struct sockaddr_in remoteAddr; //服务端地址 int Addrlen = sizeof(remoteAddr); char revData[255]; while (true) { //接收连接 Socket_Server = accept(Socket_Client,(struct sockaddr*)&remoteAddr,&Addrlen); if (Socket_Client == INVALID_SOCKET) { printf("accept error"); continue; } printf("连接成功"); //接收数据 int ret = recv(Socket_Server,revData,sizeof(revData),0); if (ret > 0) { printf("recv: %s",revData); } } close(Socket_Server); //关闭socket } |
客户端:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
#import "ViewController.h" #import <sys/socket.h> #import <netdb.h> #import <arpa/inet.h> #define SOCKET int #define INVALID_SOCKET -1 @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //创建Socket SOCKET Socket_Server; Socket_Server = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if (Socket_Server == INVALID_SOCKET) { printf("Socket error"); return; } //初始化地址 struct sockaddr_in ClientAddr; ClientAddr.sin_family = AF_INET; ClientAddr.sin_port = htons(8000); ClientAddr.sin_addr.s_addr = inet_addr("192.168.4.107"); //循环连接 while (true) { //连接 if (connect(Socket_Server,(struct sockaddr*)&ClientAddr,sizeof(ClientAddr)) < 0) { printf("connect error\n"); sleep(3); continue; } printf("连接成功"); break; } //发送 if (send(Socket_Server,"上线了",sizeof("上线了"),0) < 0) { printf("send error"); return; } //关闭Socket close(Socket_Server); // Do any additional setup after loading the view, typically from a nib. } |
转载请注明:exchen's blog » iOS socket 套接字编程