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 ;
}

socket TCP简单通讯的更多相关文章

  1. 零配置Socket TCP消息通讯服务容器EC

    EC全称是elastic communication,是基于c#实现的Socket网络通讯服务容器,支持windows .Net和mono.通过EC容器可以让开发人员在不了解Socket网络通讯知识和 ...

  2. TCP简单通讯

    客户端代码: package com.kaige123.net01; import java.io.IOException; import java.io.InputStream; import ja ...

  3. socket UDP简单通讯

    // // SocketUDPServerClient.m // socket_server_client // // Created by lujunjie on 2016/11/26. // Co ...

  4. ActionScript简单实现Socket Tcp应用协议分析器

    转自..smark http://www.cnblogs.com/smark/archive/2012/05/15/2501507.html ActionScript简单实现Socket Tcp应用协 ...

  5. JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用

    JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...

  6. 使用Beetle简单构建高性能Socket tcp应用

    beetle是基于c#编写的高性能Socket tcp组件,它基于SocketAsyncEventArgs的实现并提供了发送队列和接收队列的支持,可以根据情况灵活地设置1-N个发送队列和接收队列.除了 ...

  7. 程序猿修仙之路--数据结构之你是否真的懂数组? c#socket TCP同步网络通信 用lambda表达式树替代反射 ASP.NET MVC如何做一个简单的非法登录拦截

    程序猿修仙之路--数据结构之你是否真的懂数组?   数据结构 但凡IT江湖侠士,算法与数据结构为必修之课.早有前辈已经明确指出:程序=算法+数据结构  .要想在之后的江湖历练中通关,数据结构必不可少. ...

  8. socket.io简单说明及在线抽奖demo

    socket.io简单说明及在线抽奖demo socket.io 简介 Socket.IO可以实现实时双向的基于事件的通信. 它适用于各种平台,浏览器或设备,也同样注重可靠性和速度. socket.i ...

  9. socket,TCP/IP的理解

    TCP/IP 要想理解socket首先得熟悉一下TCP/IP协议族, TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间 ...

随机推荐

  1. CodeBlocks 配色方案

    搜索<colour_sets>,在</ACTIVE_LANG>下加入: 有几种经典方案,包括vim,desert,sublime,ulipad,oblivion,darkgra ...

  2. python数据处理技巧一

    字符串赋值(传参)技巧 Python中一般的字符串赋值的方式如下: variable = "Test" print "I just [%s] unit"%var ...

  3. @Mapper 和 @MapperScan 区别

    1.@Mapper : 为了使接口被其他类引用,需要使用@Mapper注解,这种方式要求每一个mapper类都需要添加此注解,麻烦. package com.example.demo.dao; imp ...

  4. this对象的理解

    (回答一:) (1).js的this指向是不确定的,也就是说是可以动态改变的.call/apply 就是用于改变this指向的函数,这样设计可以让代码更加灵活,复用性更高 (2).this 一般情况下 ...

  5. centos下安装redis/mysql等基础环境

    1.修改语言 阿里云的ECS默认语言是:en_US.UTF-8,需要改成zh_CN.UTF-8 修改方法:vim /etc/locale.conf,然后重启. 查看方法:echo $LANG 2.安装 ...

  6. hdu 5375 - Gray code(dp) 解题报告

    Gray code Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total ...

  7. headset-监听有线耳机插拔

    今天在做项目的时候,需要对耳机的插拔事件进行监听,所以就写了如下的一个小demo,对耳机监听事件进行验证.直接看代码 package com.example.alert; import android ...

  8. VS中创建自定义一个VC工程为基础的开发向导的总结

    作者:朱金灿 来源:http://blog.csdn.net/clever101 VS允许用户进行自定义开发向导.自定义开发向导的好处在于将常用的设置都通过向导生成,从而大大提供开发效率.特别是在开发 ...

  9. Kinect 开发 —— 手势识别(上)

    像点击(clicks)是GUI平台的核心,轻点(taps)是触摸平台的核心那样,手势(gestures)是Kinect应用程序的核心 关于手势的定义的中心在于手势能够用来交流,手势的意义在于讲述而不是 ...

  10. 玲珑学院 1050 - array

    1050 - array Time Limit:3s Memory Limit:64MByte Submissions:494Solved:155 DESCRIPTION 2 array is an ...