using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Net.Sockets;
using System.Net;
using System.Text;
using System;
using System.Threading; namespace HelloSocket
{
/// <summary>
///配置信息
/// </summary>
/// ip地址 端口 类型:TCP/UDP
class HelloAddress
{
private static string host ="127.0.0.1";
private static int port = 5055;
private static IPAddress ip = IPAddress.Parse(host);
public static IPEndPoint IPEP = new IPEndPoint(ip, port);
public static Socket hSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); ///<summary>
///修改配置信息
///</summary>
///ip地址 端口 类型:TCP/UDP
public static void SetHelloAddress(string ipStr, int iPort, System.Net.Sockets.ProtocolType type)
{
host = ipStr;
port = iPort;
ip = IPAddress.Parse(host);
IPEP = new IPEndPoint(ip, port);
hSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, type);
}
} ///<summary>
///客户端
///</summary>
/// API
class HelloClient : HelloAddress
{
///<summary>
///连接服务端
///</summary>
public static void Main()
{
try
{
hSocket.Connect(IPEP);
Thread threadConnect = new Thread(new ThreadStart(ReceiveMessage));
threadConnect.Start();
}
catch (ArgumentNullException e)
{
Debug.Log(e.ToString());
}
catch (SocketException e)
{
Debug.Log(e.ToString());
}
} ///<summary>
///发送信息
///</summary>
public static void SendMessage(string sendStr)
{
//确定是否连接
if (hSocket.Connected)
{
IPEndPoint ipe = (IPEndPoint)hSocket.RemoteEndPoint;
sendStr = ipe.ToString() + sendStr;
byte[] bs = Encoding.ASCII.GetBytes(sendStr);
hSocket.Send(bs, bs.Length, 0);
}
} ///<summary>
///接收信息
///</summary>
private static void ReceiveMessage()
{
while (true)
{
byte[] recvBytes = new byte[1024];
int iBytes = hSocket.Receive(recvBytes, recvBytes.Length, 0);
if (iBytes <= 0)
{
break;
}
string recvStr = "";
recvStr+=Encoding.ASCII.GetString(recvBytes,0,iBytes);
Debug.Log("服务端返回的数据:" + recvStr);
}
}
///<summary>
///关闭套接字
///<summary>
public static void Close()
{
hSocket.Close();
}
} ///<summary>
///服务端
///</summary>
/// API
class HelloServer : HelloAddress
{
//存储连接服务端的所有用户
public static List<Socket> listPlayer = new List<Socket>();
private static Socket sTemp;
///<summary>
///服务端 绑定地址并监听
///</summary>
public static void Main()
{
try
{
Thread threadListenAccept = new Thread(new ThreadStart(ListenAccept));
threadListenAccept.Start();
}
catch (ArgumentNullException e)
{
Debug.Log(e.ToString());
}
catch (SocketException e)
{
Debug.Log(e.ToString());
}
} ///<summary>
///监听用户连接
///</summary>
private static void ListenAccept()
{
hSocket.Bind(IPEP);
hSocket.Listen(0);
sTemp = hSocket.Accept();
listPlayer.Add(sTemp);
Thread threadReceiveMessage = new Thread(new ThreadStart(ReceiveMessage));
threadReceiveMessage.Start();
while (true)
{
sTemp = hSocket.Accept();
listPlayer.Add(sTemp);
}
}
///<summary>
///接收信息
///<summary>
private static void ReceiveMessage()
{
while (true)
{
byte[] recvBytes = new byte[1024];
int iBytes =sTemp.Receive(recvBytes, recvBytes.Length, 0);
if (iBytes <= 0)
{
break;
}
string recvStr = "";
recvStr += Encoding.ASCII.GetString(recvBytes, 0, iBytes);
Debug.Log("客户端获取的数据:" + recvStr);
}
}
///<summary>
///发送信息
///</summary>
public static void SendMessage(string sendStr)
{
IPEndPoint ipe = (IPEndPoint)sTemp.RemoteEndPoint;
sendStr = ipe.ToString() + sendStr;
byte[] bs = Encoding.ASCII.GetBytes(sendStr);
sTemp.Send(bs, bs.Length, 0);
}
///<summary>
///关闭套接字
///</summary>
public static void Close()
{
for (int i = 0; i < listPlayer.Count; i++)
{
listPlayer[i].Close();
}
sTemp.Close();
hSocket.Close();
}
} }

Unity Socket TCP的更多相关文章

  1. unity Socket TCP连接案例(一)

    非常清晰的demo 服务端 using System; using System.Collections; using System.Collections.Generic; using System ...

  2. 分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载

    一.分布式消息总线以及基于Socket的实现 在前面的分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载一文之中给大家分享和介绍了一个极其简单也非常容易上的基于.N ...

  3. 分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载

    一.分布式消息总线 在很多MIS项目之中都有这样的需求,需要一个及时.高效的的通知机制,即比如当使用者A完成了任务X,就需要立即告知使用者B任务X已经完成,在通常的情况下,开发人中都是在使用者B所使用 ...

  4. 重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP

    [源码下载] 重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP 作者:webabcd 介绍重新想象 Windows 8 Store ...

  5. 关于socket tcp 断线重连

    这个问题困扰过我几次,都没有来得及研究,今天研究一下. 首先写一个最简易的socket tcp程序,连接成功后再关闭服务器然后再用客户端各种操作看是什么情况 测试表明 (1)客户端已经连接,当服务端关 ...

  6. ActionScript简单实现Socket Tcp应用协议分析器

    转自..smark http://www.cnblogs.com/smark/archive/2012/05/15/2501507.html ActionScript简单实现Socket Tcp应用协 ...

  7. 与众不同 windows phone (30) - Communication(通信)之基于 Socket TCP 开发一个多人聊天室

    原文:与众不同 windows phone (30) - Communication(通信)之基于 Socket TCP 开发一个多人聊天室 [索引页][源码下载] 与众不同 windows phon ...

  8. 基于.NET Socket Tcp的发布-订阅框架

    基于.NET Socket Tcp的发布-订阅框架 一.分布式消息总线 在很多MIS项目之中都有这样的需求,需要一个及时.高效的的通知机制,即比如当使用者A完成了任务X,就需要立即告知使用者B任务X已 ...

  9. 初步探究java中程序退出、GC垃圾回收时,socket tcp连接的行为

    初步探究java中程序退出.GC垃圾回收时,socket tcp连接的行为 今天在项目开发中需要用到socket tcp连接相关(作为tcp客户端),在思考中发觉需要理清socket主动.被动关闭时发 ...

随机推荐

  1. Android之触摸手势检测GestureDetector使用详解

    在Android中,当用户触摸屏幕的时候,会产生许多手势,例如down,up,scroll,filing,onSingleTapConfirmed(单击),onDoubleTap(双击)等等. 一般情 ...

  2. SQL Server专家的10个秘诀(翻译加注解)

    当你点开这篇文章的时候,如果觉得没有读下去的必要,也希望你能拉到最后看看那几行字! 原文出处:https://technet.microsoft.com/en-us/magazine/gg299551 ...

  3. 用Maven打包成EAR部署JBoss

    基于原理的架构里面,考虑这次升级版本,可谓是一步一个脚印的向上走啊,可以说步步为坎,别人的知识,和自己的知识,相差很多啊,什么都懂点,但是具体没有使用,就理解不深刻了,心有余而力不足,所以一切我们自己 ...

  4. 一个 Linux 上分析死锁的简单方法

    简介 死锁 (deallocks): 是指两个或两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这 ...

  5. ubuntu mysql表名大小写区分

    近期开发线上操作系统用的ubuntu,数据库用的mysql,突然发现mysql表名大写报错,找一下原因,看了下mysql的配置,果真可以设置,窃喜. 先找到你MySQL的my.cnf配置文件并修改,当 ...

  6. 3.QT事件处理,消息过滤器

     1  新建一个项目:06Event 新建cpp文件 06Event.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += wid ...

  7. 【java虚拟机系列】从java虚拟机字节码执行引擎的执行过程来彻底理解java的多态性

    我们知道面向对象语言的三大特点之一就是多态性,而java作为一种面向对象的语言,自然也满足多态性,我们也知道java中的多态包括重载与重写,我们也知道在C++中动态多态是通过虚函数来实现的,而虚函数是 ...

  8. 参数估计:最大似然估计MLE

    http://blog.csdn.net/pipisorry/article/details/51461997 最大似然估计MLE 顾名思义,当然是要找到一个参数,使得L最大,为什么要使得它最大呢,因 ...

  9. 后端分布式系列:分布式存储-MySQL 数据库事务与复制

    好久没有写技术文章了,因为一直在思考 「后端分布式」这个系列到底怎么写才合适.最近基本想清楚了,「后端分布式」包括「分布式存储」和 「分布式计算」两大类.结合实际工作中碰到的问题,以寻找答案的方式来剖 ...

  10. Hessian源码分析--HessianProxyFactory

    HessianProxyFactory是HessianProxy的工厂类,其通过HessianProxy来生成代理类. 如下面代码: HessianProxyFactory factory = new ...