iOS socket 笔记
ios 客服端:
下载 AsyncSocket 开发框架,拖到项目中
//建立
#import "ViewController.h"
#import <sys/socket.h>
#import <netinet/in.h>
#import <arpa/inet.h>
#import <unistd.h>
#import "AsyncSocket.h"
#define DEVW [[UIScreen mainScreen]bounds].size.width
@interface ViewController ()
{
AsyncSocket *asysocket;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
asysocket = [[AsyncSocket alloc] initWithDelegate:self];
NSError *err = nil;
if(! [self SocketOpen:@"172.16.1.92" port:1212])
{
NSLog(@"Error: %@", err);
}
// Do any additional setup after loading the view, typically from a nib.
}
-(void)sendData:(UIButton *)click
{
NSMutableString *sendString=[NSMutableString stringWithCapacity:1000];
[sendString appendString:@"hello world!"];
NSData *cmdData = [sendString dataUsingEncoding:NSUTF8StringEncoding];
[asysocket writeData:cmdData withTimeout:-1 tag:0];
}
//打开
- (NSInteger)SocketOpen:(NSString*)addr port:(NSInteger)port
{
if (![asysocket isConnected])
{
[asysocket connectToHost:addr onPort:port withTimeout:-1 error:nil];
//NSLog(@"connect to Host:%@ Port:%d",addr,port);
}
return 0;
}
- (void)onSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err
{
NSLog(@"willDisconnectWithError:%@",err);
}
- (void)onSocketDidDisconnect:(AsyncSocket *)sock
{
NSLog(@"onSocketDidDisconnect");
}
- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port
{
NSLog(@"didConnectToHost");
//这是异步返回的连接成功,
[sock readDataWithTimeout:-1 tag:0];
}
- (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
{
NSString *msg = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
if(msg)
{
//处理受到的数据
NSLog(@"收到的数据:%@",msg);
}
else
{
NSLog(@"Error converting received data into UTF-8 String");
}
NSString *message=@"连接成功";
NSData *cmdData = [message dataUsingEncoding:NSUTF8StringEncoding];
[sock writeData:cmdData withTimeout:-1 tag:0];
[sock readDataWithTimeout:-1 tag:0];
}
-(void)onSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag
{
NSLog(@"didWriteDataWithTag:%ld",tag);
[sock readDataWithTimeout:-1 tag:0];
}
c#服务端:
//服务器端
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
using System.Threading; namespace Server
{
public partial class Form1 : Form
{
Socket socketSend; public Form1()
{
InitializeComponent(); CheckForIllegalCrossThreadCalls = false;
} //监听
private void button1_Click(object sender, EventArgs e)
{
Socket socketWatch = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); IPAddress ip = IPAddress.Any; IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(this.txtPort.Text)); socketWatch.Bind(point); ShowMsg("监听成功"); //监听
socketWatch.Listen(10); //使用线程不断监听
Thread thread = new Thread(Listen); thread.IsBackground = true; thread.Start(socketWatch); } //发送信息
private void button2_Click(object sender, EventArgs e)
{
string msg = this.txtMsg.Text.Trim(); byte[] buffer = Encoding.UTF8.GetBytes(msg); socketSend.Send(buffer);
} //监听客户端socket
void Listen(object o)
{
Socket socketWatch = o as Socket; while (true)
{
//等待客户端的连接 并且创建一个负责通信的Socket
socketSend = socketWatch.Accept(); ShowMsg(socketSend.RemoteEndPoint.ToString() + ":" + "连接成功"); //接受客户端发送的信息
Thread thread = new Thread(Receive);
thread.IsBackground = true; thread.Start(socketSend);
} } void Receive(object o)
{ Socket socketSend = o as Socket; while (true)
{ byte[] buffer = new byte[1024 * 1024 * 2]; int r = socketSend.Receive(buffer);
if (r == 0)
{
break;
} string msg = Encoding.UTF8.GetString(buffer,0,r); ShowMsg(socketSend.RemoteEndPoint.ToString() + ":" + msg);
}
} void ShowMsg(string msg)
{
txtLog.AppendText(msg+"\r\n");
} }
}

//winform客户端

//客户端
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
using System.Threading; namespace Client
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
CheckForIllegalCrossThreadCalls = false;
}
Socket socketSend;
private void button1_Click(object sender, EventArgs e)
{
socketSend = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); //获取服务器ip
IPAddress ip = IPAddress.Parse(txtIp.Text.Trim()); //获取端口号
IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(txtPort.Text.Trim())); //连接服务器
socketSend.Connect(point); //开启一个线程不断接受服务器端发送过来的信息
Thread thread = new Thread(Receive);
thread.IsBackground = true;
thread.Start(); } /// <summary>
/// 接受服务端发送的信息
/// </summary> void Receive()
{ while (true)
{
byte[] buffer = new byte[1024 * 1024 * 2];
int r = socketSend.Receive(buffer);
if (r == 0)
{
break;
}
string msg = Encoding.UTF8.GetString(buffer, 0, r); ShowMsg(socketSend.RemoteEndPoint + ":" + msg); }
} /// <summary>
/// 客服端向服务器端发送信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
string msg = this.txtMsg.Text.Trim();
byte[] buffer = Encoding.UTF8.GetBytes(msg);
socketSend.Send(buffer);
} void ShowMsg(string msg)
{
txtLog.AppendText(msg + "\r\n");
}
}
}
iOS socket 笔记的更多相关文章
- iOS学习笔记——AutoLayout的约束
iOS学习笔记——AutoLayout约束 之前在开发iOS app时一直以为苹果的布局是绝对布局,在IB中拖拉控件运行或者直接使用代码去调整控件都会发上一些不尽人意的结果,后来发现iOS在引入了Au ...
- IOS Socket 05-XMPP开始&安装服务器openfire&安装配置客户端
1. 即时通讯技术简介(IM) 即时通讯技术(IM-Instant Messageing)支持用户在线实时交谈.如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双方 ...
- IOS Socket 04-利用框架CocoaAsyncSocket实现客户端/服务器端
这篇文章,我们介绍CocoaAsyncSocket框架的使用,主要介绍实现客户端/服务器端代码,相信在网上已经很多这样的文章了,这里做一下自己的总结.这里介绍使用GCD方式 一.客户端 1.下载地址 ...
- IOS Socket 03-建立连接与登录
1. 搭建python服务器 这里我们用到python服务器Socket Server.如何运行Server?下面介绍 1)通过百度云下载文件 http://pan.baidu.com/s/1i5yb ...
- IOS Socket 02-Socket基础知识
1. 简介 Socket就是为网络服务提供的一种机制 通信的两端都是Socket 网络通信其实就是Socket间的通信 数据在两个Socket间通过IO传输 2. Socket通信流程图 3. 模拟Q ...
- IOS Socket 01-网络协议基础知识
1. 网络参考模型 OSI参考模型 TCP/IP参考模型 2. 七层简述 1)物理层:主要定义物理设备标准,如网线的接 ...
- IOS学习笔记25—HTTP操作之ASIHTTPRequest
IOS学习笔记25—HTTP操作之ASIHTTPRequest 分类: iOS2012-08-12 10:04 7734人阅读 评论(3) 收藏 举报 iosios5网络wrapper框架新浪微博 A ...
- IOS学习笔记之关键词@dynamic
IOS学习笔记之关键词@dynamic @dynamic这个关键词,通常是用不到的. 它与@synthesize的区别在于: 使用@synthesize编译器会确实的产生getter和setter方法 ...
- iOS学习笔记-精华整理
iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始 ...
随机推荐
- java分享第七天-02(读取文件)
一 读取文件 public static void main(String[] args) throws FileNotFoundException, IOException { // 建立File对 ...
- 使用功能强大的插件FastReport.Net打印报表实例
我第一次使用FastReport插件做的功能是打印一个十分复杂的excel表格,有几百个字段都需要绑定数据,至少需要4个数据源,而且用到横向.竖向合并单元格. 我不是直接连接数据库,而是使用Regis ...
- C register
1.register修饰符暗示编译程序相应的变量将被频繁地使用,如果可能的话,应将其保存在CPU的寄存器中,以加快其存储速度.例如下面的内存块拷贝代码, /* Procedure for the as ...
- PHPExcel 使用笔记
获取sheet 有效效值行列数 $maxCell = $objWorksheet->getHighestRowAndColumn(); $data = $objWorksheet->ran ...
- 几何服务,cut功能,输入要素target(修改后)内容。
几何服务,cut功能测试,输入要素target(修改后)内容. {"displayFieldName":"","fieldAliases": ...
- CentOS7源码编译安装Postgresql9.5
1.安装必要的基本软件 yum install -y gcc.x86_64 glibc.x86_64 glibc-devel.x86_64 vim-enhanced.x86_64 gcc-java a ...
- svn 服务器搭建
http://www.cnblogs.com/wrmfw/archive/2011/09/08/2170465.html 一,安装必须的软件包. $ apt-get install subversio ...
- 《项目经验》--通过js获取前台数据向一般处理程序传递Json数据,并解析Json数据,将前台传来的Json数据写入数据库表中
先看一下我要实现的功能界面: 这个界面的功能在图中已有展现,课程分配(教师教授哪门课程)在之前的页面中已做好.这个页面主要实现的是授课,即给老师教授的课程分配学生.此页面实现功能的步骤已在页面 ...
- 【Html 学习笔记】第二节——文本格式
上一节基本已经了解了一些html的基础,这一节主要学习html处理文本相关内容,直接看内容吧. 字体: 预格式文本:<pre> 地址:<address> 缩写:<abbr ...
- sqlite数据库相关总结
1. sqlite是轻量型.关系型管理系统,是嵌入式的,占用资源低.可移植性强,比mySql处理速度快,现在主流的版本是sqlite3 2. sqlite中的数据类型有TEXT(字符串,采用UTF-8 ...