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. OpenCV中Mat数据的访问报错

    最近再写一段程序的时候,要访问Mat中的元素.在定义Mat型数据的时候,用 Mat ObjectPoints(48,3,CV_32FC1,0) 对其进行初始化后,用at进行访问时报内存错误. Mat ...

  2. Linux常用下载软件

    1.TransmissionTransmission是一个BitTorrent客户端软件,Ubunut默认自带的下载软件,它支持速度限制.制作种子.远程控制.磁力链接.数据加密.损坏修复.数据来源交换 ...

  3. Fedora27 源配置

    一.添加阿里源,阿里源我感觉是现在国内比较好用的源,支持的发行版比较全.配置方法1.备份系统自带的源mv /etc/yum.repos.d/fedora.repo /etc/yum.repos.d/f ...

  4. Yeslab 华为安全HCIE七门之-防火墙基础(12篇)

    Yeslab 华为安全HCIE七门之-防火墙基础(12篇) Yeslab 全套华为安全HCIE七门之第二门防火墙基础(12篇),第一门课论坛很早就有了,可自行下载,后面的陆续分享给大家. 华为安全HC ...

  5. CodeForcesGym 100502G Outing

    Outing Time Limit: 1000ms Memory Limit: 524288KB This problem will be judged on CodeForcesGym. Origi ...

  6. Codeforces 164 D Minimum Diameter

    题目链接~~> 做题感悟:越来越感觉CF的题非常好,非常有深度. 解题思路: 这题须要注意 k 的大小.由于 k 仅仅有 30 个,终于形成的点的直径一定是某个确定的值,所以我们能够枚举这个值. ...

  7. 自编Photoshop简单教程

    由于本科时对图形图像比較感兴趣所以Ps和Ai玩的还算能够.所以无论本科时候还是研究生阶段总是有非常多人让我帮忙处理一些图片.记得工作那一年參与一个大项目时还帮了CRI里员工处理了一些图片项目中也处理了 ...

  8. Oracle 练习

    --简单的select语句select deptno,dname,loc from DEPT where deptno='40';--描述表结构 部门表desc dept;--雇员表desc emp; ...

  9. wpf--------------datagrid全选反选 多选进行删除操作 前后台

    前台绑定 <DataGrid.Columns> <DataGridTemplateColumn > <DataGridTemplateColumn.HeaderTempl ...

  10. 各种join一目了然: join 、inner join、left join 、right join、full join

    各种join一幅图一目了然 一下每幅图都是指: A * join B on A.id = B.in 这个帖子也非常形象.比較好:http://www.phpddt.com/db/inner_join- ...