永发信息网

Socket TCP在ios上使用应该注意哪些问题

答案:1  悬赏:20  手机版
解决时间 2021-02-15 14:11
Socket TCP在ios上使用应该注意哪些问题
最佳答案
ios 使用TCP有没有什么特殊的地方啊!为什么我写的东西在安卓上和电脑上都好使,

CDR._client是一个静态字段;public class LOSocket
{
//可以创建的Socket端口类型
public enum LOSocketType
{
CLIENT = 0,
SERVER = 1,
}
#region --------取消构造器
private LOSocket ()
{
}
#endregion
#region --------公共代码
//通过静态方法获取不同的端口类型
public static LOSocket GetSocket (LOSocket.LOSocketType type)
{
LOSocket socket = null;
switch (type) {
case LOSocketType.CLIENT:
{
//创建一个新的客户端
socket = new LOSocket ();
break;
}
}
return socket;
}
#endregion
#region --------客户端部分代码
private Socket clientSocket;
//声明客户端收到服务端返回消息后的回调委托函数
private ReceiveCallBack clientReceiveCallBack;
//用来存储服务端返回的消息数据
byte[] Buffer = new byte[1024];
//初始化客户端Socket信息
public void InitClient (string ip, int port, ReceiveCallBack ccb)
{
this.clientReceiveCallBack = ccb;
this.clientSocket = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress address = IPAddress.Parse (ip);
IPEndPoint ep = new IPEndPoint (address, port);
this.clientSocket.Connect (ep);

// if (!clientSocket.Connected) {
// CDR.exception = "连接已经断开";
// Debug.Log ("连接已经断开");
// }
//开始异步等待接收服务端消息
this.clientSocket.BeginReceive (Buffer, 0, Buffer.Length, SocketFlags.None, new System.AsyncCallback (ReceiveFromServer), this.clientSocket);
}
//收到服务端返回消息后的回调函数
void ReceiveFromServer (System.IAsyncResult ar)
{
//获取当前正在工作的Socket对象
Socket worker = ar.AsyncState as Socket;
int ByteRead = 0;
try {
//接收完毕消息后的字节数
ByteRead = worker.EndReceive (ar);
Debug.Log ("--" + ByteRead);
} catch (System.Exception ex) {
CDR.exception = ex.ToString ()+"BuHuoDeYiChang";
// this.clientReceiveCallBack(ex.ToString());
}
if (ByteRead > 0) {
string Content = Encoding.UTF8.GetString (Buffer, 0, ByteRead);
//通过回调函数将消息返回给调用者
Debug.Log ("Content:" + Content);
this.clientReceiveCallBack (Content);
}
//继续异步等待接受服务器的返回消息
worker.BeginReceive (Buffer, 0, Buffer.Length, SocketFlags.None, new System.AsyncCallback (ReceiveFromServer), worker);
}
//客户端主动发送消息
public void SendMessage (string message)
{
if (message == null)
return;
CDR.cs+="FaSongData"+message+"\n";
Debug.Log (message);
message += "\r\n";
byte[] sendData = Encoding.UTF8.GetBytes (message);
//异步发送消息请求
clientSocket.BeginSend (sendData, 0, sendData.Length, SocketFlags.None, new System.AsyncCallback (SendToServer), clientSocket);
}
//发送消息结束的回调函数
void SendToServer (System.IAsyncResult ar)
{
Socket worker = ar.AsyncState as Socket;
worker.EndSend (ar);
CDR.isHeartbeat = 0;
}
#endregion
下面是客户端的发送和接收的代码
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我想在电脑上工作,有这样的工作吗?
嘉特旅店在哪里啊,我有事要去这个地方
五行属火的男孩取名
26和91的最大公倍数是什么 . 42,105和56的最
西塘平川客栈在哪里啊,我有事要去这个地方
英雄联盟解说小莫视频中放的萨克斯歌曲叫什么
发蜡和啫喱水不是没有区别吗?
下列我国名泉中哪一眼位于杭州()
中塘坡在什么地方啊,我要过去处理事情
求歌名,中间歌词是这样的,萍水相蓬,你却给
中国电信114挂号平台把余额退回
观察动物作文150字
win2003 加/PAE后仍无法识别4G内存
昱缘招待所在哪里啊,我有事要去这个地方
孩子生出来下牙床上就有牙'这会不会影响
推荐资讯
富豪皮革公司万利制衣公司在哪里啊,我有事要
为什么我在爱情中总是卑微的?
公安网查询宾馆住宿532723198504273024
能提供一些好的科技信息发展方向类,或是一些
老师你好,我的家人想让我读芷江师范,而我想
灵湖这个地址在什么地方,我要处理点事
vb 用inputbox读取路径,并保存数据
初一英语寒假作业 2015
(10分)读图,中国局部示意图甲与某山地自然
【采菊东篱下的意思】采菊东篱下.什么意思嘛?
我最近在追韩剧,老是没有找到好看的韩剧,想
【九年级物理期末试卷】帮我出一份九年级物理
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?