socket 服务器

//
// main.m
// socket_server
//
// Created by lujunjie on 2016/11/23.
// Copyright © 2016年 lujunjie. All rights reserved.
// #import <Foundation/Foundation.h>
#import <sys/socket.h>
#import <netinet/in.h>
#import <arpa/inet.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"Hello, World!");
// 第一步:打开套节字描述
int sockfd = -;
sockfd = socket(AF_INET, SOCK_STREAM, );// 协议族、套节字可靠性传输、0
if(sockfd == -)
{
NSLog(@"error:打开套节字描述符失败socket()");
return ;
}
NSLog(@"打开套节字描述sockfd:%d",sockfd); // 第二步:bind 绑定sockfd和当前电脑的ip地址&端口号
struct sockaddr_in serveraddr;
serveraddr.sin_family = AF_INET;
serveraddr.sin_port = htons(); // 5000~655355
serveraddr.sin_addr.s_addr = inet_addr("192.168.1.103");
int ret =bind(sockfd, (struct sockaddr *)&serveraddr, sizeof(serveraddr));
if (ret < ) {
NSLog(@"error:bind");
return ;
}
NSLog(@"bind-ret:%d",ret); // 第三步:listen监听端口
int listenRet = listen(sockfd, );// ..,监听多少个;
if (listenRet < ) {
NSLog(@"error:listen");
return ;
}
NSLog(@"listen-ret:%d",listenRet); // 第四步:accept阻塞等待客户端接入
struct sockaddr_in clientaddr;
socklen_t len = ;
int clientfd = accept(sockfd, (struct sockaddr *)&clientaddr, &len);
if (clientfd < ) {
NSLog(@"error:accept");
return ;
}
NSLog(@"accept-clientfd:%d",clientfd);
NSLog(@"成功建立连接"); // 建立连接之后通信
char recvbuf[];
memset(recvbuf, , sizeof(recvbuf));
//
// long recvRet = recv(clientfd, recvbuf, sizeof(recvbuf), 0);
//
// NSLog(@"成功接收了%ld个字节\n",recvRet);
// NSLog(@"client发送过来的内容是:%s",recvbuf);
// printf("client发送过来的内容是:%s",recvbuf); while () {
long recvRet = recv(clientfd, recvbuf, sizeof(recvbuf), );
NSLog(@"成功接收了%ld个字节\n",recvRet);
NSLog(@"NSLogclient发送过来的内容是:%s",recvbuf);
memset(recvbuf, , sizeof(recvbuf));
} }
return ;
}

socket客户端

//
// main.m
// socket_client_Command
//
// Created by lujunjie on 2016/11/23.
// Copyright © 2016年 lujunjie. All rights reserved.
// #import <Foundation/Foundation.h>
#import <sys/socket.h>
#import <netinet/in.h>
#import <arpa/inet.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// insert code here...
NSLog(@"socket_client_Command"); // 第一步:打开套节字描述
int sockfd = -;
sockfd = socket(AF_INET, SOCK_STREAM, );// 协议族、套节字可靠性、0
if(sockfd == -)
{
NSLog(@"error:打开套节字描述符失败socket()");
return ;
}
NSLog(@"打开套节字描述sockfd:%d",sockfd); // 第二步:connect 链接服务器
struct sockaddr_in serveraddr;
serveraddr.sin_family = AF_INET;
serveraddr.sin_port = htons(); // 5000~655355
serveraddr.sin_addr.s_addr = inet_addr("192.168.1.103");
int ret = connect(sockfd, (struct sockaddr *)&serveraddr, sizeof(serveraddr));
if (ret < ) {
NSLog(@"error:connect");
return ;
}
NSLog(@"connect-ret:%d",ret);
NSLog(@"成功建立连接"); char sendbuf[];
//
// strcpy(sendbuf, "cliend:hello world");
// long retstr=send(sockfd, sendbuf,strlen(sendbuf),0);
//
// NSLog(@"发送了%ld个字符\n",retstr); while () {
NSLog(@"请输入要发送的内容\n");
scanf("%s",sendbuf);
long retstr=send(sockfd, sendbuf,strlen(sendbuf),);
NSLog(@"发送了%ld个字符\n",retstr); } }
return ;
}

最新文章

  1. CSS4
  2. disable_irq与disable_irq_nosync使用场景
  3. 每天一个 Linux 命令(19):find 命令概览
  4. git 使用笔记
  5. Windows 8.1 应用开发后台任务概述(Windows XAML)
  6. CSS选择器及其优先级
  7. Open Explorer Plugin for Eclipse (eclipse 插件 在eclipse里面打开文件目录)
  8. C#面向对象(三)接口实现多态
  9. 对于一个网站,如何禁止直接从浏览器Web browser中访问js文件
  10. Android带头像的用户注册页面
  11. 动态加载JS脚本的4种方法
  12. UEditor富文本编辑框学习
  13. Qt for Mac:发布程序(widgets和quick2)
  14. html布局
  15. robomongo
  16. 【转】CXF+Spring+Eclipse简明示例
  17. Promise(一)
  18. [HEOI2014]平衡(整数划分数)
  19. 【数据库】jdbc详解
  20. node-webkit学习(2)基本结构和配置

热门文章

  1. url传递中文的解决方案总结
  2. SqlCommand的四大方法
  3. Python正则表达式初识(三)
  4. WebAssembly学习(四):AssemblyScript - 结构体系与内置函数
  5. Linux学习总结(7)——阿里云centeros服务器上安装 jdk,tomcat,mysql
  6. HOJ——T 2430 Counting the algorithms
  7. JavaScript版MD5应用
  8. HDU 5375 Gray code(DP)
  9. VS书签的应用
  10. Linux下截图技巧