服务端:
#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
}
客户端:
#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.
}