socket TCP简单通讯
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简单通讯的更多相关文章
- 零配置Socket TCP消息通讯服务容器EC
EC全称是elastic communication,是基于c#实现的Socket网络通讯服务容器,支持windows .Net和mono.通过EC容器可以让开发人员在不了解Socket网络通讯知识和 ...
- TCP简单通讯
客户端代码: package com.kaige123.net01; import java.io.IOException; import java.io.InputStream; import ja ...
- socket UDP简单通讯
// // SocketUDPServerClient.m // socket_server_client // // Created by lujunjie on 2016/11/26. // Co ...
- ActionScript简单实现Socket Tcp应用协议分析器
转自..smark http://www.cnblogs.com/smark/archive/2012/05/15/2501507.html ActionScript简单实现Socket Tcp应用协 ...
- JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用
JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...
- 使用Beetle简单构建高性能Socket tcp应用
beetle是基于c#编写的高性能Socket tcp组件,它基于SocketAsyncEventArgs的实现并提供了发送队列和接收队列的支持,可以根据情况灵活地设置1-N个发送队列和接收队列.除了 ...
- 程序猿修仙之路--数据结构之你是否真的懂数组? c#socket TCP同步网络通信 用lambda表达式树替代反射 ASP.NET MVC如何做一个简单的非法登录拦截
程序猿修仙之路--数据结构之你是否真的懂数组? 数据结构 但凡IT江湖侠士,算法与数据结构为必修之课.早有前辈已经明确指出:程序=算法+数据结构 .要想在之后的江湖历练中通关,数据结构必不可少. ...
- socket.io简单说明及在线抽奖demo
socket.io简单说明及在线抽奖demo socket.io 简介 Socket.IO可以实现实时双向的基于事件的通信. 它适用于各种平台,浏览器或设备,也同样注重可靠性和速度. socket.i ...
- socket,TCP/IP的理解
TCP/IP 要想理解socket首先得熟悉一下TCP/IP协议族, TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间 ...
随机推荐
- 在Windows下如何创建虚拟环境(默认情况下)
很多小伙伴平时在使用Python的时候,有的项目需要使用Python2来进行开发,有的项目则是需要Python3来进行开发.当不清楚怎么分开环境的时候,此时两个环境开始打架,彼此傻傻分不清楚.虚拟环境 ...
- PHP date()获取某时间段以周、月、季度为粒度的时间段数组
date()函数: PHP date() 参考:https://www.hi-docs.com/php/date.html Linux date()参考:http://www.cnblogs.com ...
- JavaScript笔记(4)
接上一篇笔记 -----> 打印: 打印: 打印: 一.break 和 continue 的区别 1.break 1.break语句可用于跳出循 ...
- 学习“花书“《深度学习》中文PDF和英文PDF
个人觉得github上的中文版翻译的不错,有700多页,深度学习入门经典书籍,前几章的数学基础介绍的相当不错. 第一部分基本就是统计学习最基础的线性代数,概率论等,第4章值得一读,讲了些数值分析里常涉 ...
- 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 ...
- button按钮怎么实现超链接
button按钮怎么实现超链接 一.总结 1.我的按钮实现超链接是通过button内嵌a标签来实现的 <button class="am-btn am-btn-default am-b ...
- ElasticSearch、Kibana Web管理
ElasticSearch的Web管理 http://localhost:9200/ http://localhost:9200/cluster/health?pretty http://localh ...
- ASP.NET Web.config学习
花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点.所以这里只介绍一些比较常用的节点. <? ...
- BZOJ4712: 洪水(树链剖分维护Dp)
Description 小A走到一个山脚下,准备给自己造一个小屋.这时候,小A的朋友(op,又叫管理员)打开了创造模式,然后飞到 山顶放了格水.于是小A面前出现了一个瀑布.作为平民的小A只好老实巴交地 ...
- 00084_Map接口
1.Map接口概述 通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同. (1)Collection中的集合,元素是孤立存在的(理解为单身),向集 ...