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. 在Windows下如何创建虚拟环境(默认情况下)

    很多小伙伴平时在使用Python的时候,有的项目需要使用Python2来进行开发,有的项目则是需要Python3来进行开发.当不清楚怎么分开环境的时候,此时两个环境开始打架,彼此傻傻分不清楚.虚拟环境 ...

  2. PHP date()获取某时间段以周、月、季度为粒度的时间段数组

    date()函数: PHP date()  参考:https://www.hi-docs.com/php/date.html Linux date()参考:http://www.cnblogs.com ...

  3. JavaScript笔记(4)

    接上一篇笔记    -----> 打印:                    打印:    打印: 一.break 和 continue 的区别 1.break 1.break语句可用于跳出循 ...

  4. 学习“花书“《深度学习》中文PDF和英文PDF

    个人觉得github上的中文版翻译的不错,有700多页,深度学习入门经典书籍,前几章的数学基础介绍的相当不错. 第一部分基本就是统计学习最基础的线性代数,概率论等,第4章值得一读,讲了些数值分析里常涉 ...

  5. Uva 10081 Tight words (概率DP)

    Time limit: 3.000 seconds Given is an alphabet {0, 1, ... , k}, 0 <= k <= 9 . We say that a wo ...

  6. button按钮怎么实现超链接

    button按钮怎么实现超链接 一.总结 1.我的按钮实现超链接是通过button内嵌a标签来实现的 <button class="am-btn am-btn-default am-b ...

  7. ElasticSearch、Kibana Web管理

    ElasticSearch的Web管理 http://localhost:9200/ http://localhost:9200/cluster/health?pretty http://localh ...

  8. ASP.NET Web.config学习

    花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点.所以这里只介绍一些比较常用的节点. <? ...

  9. BZOJ4712: 洪水(树链剖分维护Dp)

    Description 小A走到一个山脚下,准备给自己造一个小屋.这时候,小A的朋友(op,又叫管理员)打开了创造模式,然后飞到 山顶放了格水.于是小A面前出现了一个瀑布.作为平民的小A只好老实巴交地 ...

  10. 00084_Map接口

    1.Map接口概述 通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同. (1)Collection中的集合,元素是孤立存在的(理解为单身),向集 ...