Objective - c 클 라 이언 트
//
// main.m
// 12-11
//
// Created by dc004 on 15/12/11.
// Copyright © 2015 gang. All rights reserved.
//
#import <Foundation/Foundation.h>
// socket
#include <sys/socket.h>
//
#include <netinet/in.h>
// IP
#include <arpa/inet.h>
int main() {
// :socket->bind->connect->send->close
//
// : IP IP 。 。
//int socket(int domain, int type, int protocol);
//domain: , AF_INET
//type: 。SOCK_STREAM (TCP),SOCK_DGRAM (UDP)
//protocol: 。 , 0
int fd = socket(AF_INET, SOCK_STREAM, 0);
// -1, 。
BOOL success = (fd != -1);
//sockaddr_in
struct sockaddr_in addr;
// ,
int err;
if (success) {
NSLog(@"socket success");
//
//sizeof:
memset(&addr, 0, sizeof(addr));
// addr
// addr.sin_len = sizeof(addr);
//AF_INET IPv4
addr.sin_family = AF_INET;
//
//INADDR_ANY 0.0.0.0 。 , “ ”。
addr.sin_addr.s_addr = INADDR_ANY;
// socket , 0, -1.
err = bind(fd, (const struct sockaddr*)&addr, sizeof(addr));
success = (err == 0);//if(err==0){success = true;}
}if (success) {
NSLog(@"bind success");
//
struct sockaddr_in serveraddr;
//
memset(&serveraddr, 0, sizeof(serveraddr));
// (host to net shot)
serveraddr.sin_port = htons(1024);//
serveraddr.sin_len = sizeof(serveraddr);
serveraddr.sin_family = AF_INET;
//
serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1");// , 。
NSLog(@" ing");
// , 0, -1.
err = connect(fd, (const struct sockaddr*)&serveraddr, sizeof(serveraddr));
success = (err == 0);
socklen_t addrLen = sizeof(serveraddr);//
if (success) {
NSLog(@" ");
getsockname(fd, (struct sockaddr *)&addr, &addrLen);
success = (err == 0);
if (success) {
//inet_ntoa: IP
//ntohs:
NSLog(@" :%s, :%d",inet_ntoa(addr.sin_addr),ntohs(addr.sin_port));
//
char buf[1024];
do{
printf(" :");
//puts scanf,
// puts(buf);
scanf("%s",buf);
send(fd, buf, 1024, 0);
}while (strcmp(buf, "exit") != 0);// exit ,
}
}else{
NSLog(@"connect ");
}
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.