using UnityEngine;
using System.Collections;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System;
using System.Threading;
public class udpServer :MonoBehaviour
{ private Socket newsock;//定义一个socket变量
IPEndPoint ip;//定义一个IP地址和端口号
int recv;//定义一个接受值的变量
byte[] data = new byte[1024];//定义一个二进制的数组用来获取客户端发过来的数据包
string mydata;
void Start()
{
//得到本机IP,设置TCP端口号
ip = new IPEndPoint(IPAddress.Any, 12345);//设置自身的IP和端口号,在这里IPAddress.Any是自动获取本机IP
newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);//实例化socket对象设置寻址方案为internetwork(IP版本的4存放),设置Soket的类型,为Dgram(支持数据报形式的数据),设置协议的类型,为UDP
//绑定网络地址
newsock.Bind(ip);//绑定IP
Debug.Log("This is a Server,host name is " + Dns.GetHostName());//输出本地的名字
Debug.Log("Waiting for a client");
//BeginReceives();
Thread test = new Thread(BeginListening);//定义一个子线程
test.Start();//子线程开始
} void BeginListening()
{
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);//实例化一个网络端点,设置为IPAddress.Any为自动获取跟我通讯的IP,0代表所有的地址都可以
EndPoint Remote = (EndPoint)(sender);//实例化一个地址结束点来标识网络路径
// Debug.Log(Encoding.ASCII.GetString(data, 0, recv));//输出二进制转换为string类型用来测试
while (true)
{
data = new byte[1024];//实例化data
recv = newsock.ReceiveFrom(data, ref Remote);//将数据包接收到的数据放入缓存点,并存储终节点
//Debug.Log(Encoding.ASCII.GetString(data, 0, recv));
mydata = Encoding.ASCII.GetString(data, 0, recv);
Debug.Log(mydata);
// newsock.SendTo(Encoding.ASCII.GetBytes(mydata),mydata.Length,SocketFlags.None,Remote);
}
}
string input = "";
void SendMessage(string message)
{
byte[] data = new byte[1024];
Debug.Log("This is a client,host name is" + Dns.GetHostName());
//IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);//实例化一个网络端点,设置为IPAddress.Any为自动获取跟我通讯的IP,0代表所有的地址都可以
EndPoint Remote = (EndPoint)(ip);//实例化一个地址结束点来标识网络路径
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); //string welcome = "你好";
//data = Encoding.ASCII.GetBytes(welcome);
ip = new IPEndPoint(IPAddress.Parse("192.168.1.120"), 12346);
// server.SendTo(data, data.Length, SocketFlags.None, ip);
// data = new byte[1024];
server.SendTo(Encoding.ASCII.GetBytes(message), ip);
// data = new byte[1024];
Debug.Log("Stopping Client.");
server.Close();
}
void OnGUI()
{
//input = GUILayout.TextField(input);
input = GUI.TextField(new Rect(100, 50, 60, 30), input);
if (GUI.Button(new Rect(100, 90, 60, 30), "Send"))
{
SendMessage(input);
}
}
void OnApplicationQuit()
{
newsock.Close();
}
}

  

using System;
using UnityEngine;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading; public struct mystructs
{ public int Age; //获取结构里的
public string name;
public float Height;
public mystructs(int myage, string myname, float myheight)
{
Age = myage;
name = myname;
Height = myheight;
}
}
public class udpMystruct : MonoBehaviour
{
int Age;
string Name;//获取
float Height;
private Socket newsock;//定义一个socket变量
IPEndPoint ip;//定义一个IP地址和端口号
int recv;//定义一个接受值的变量
byte[] data = new byte[1024];//定义一个二进制的数组用来获取客户端发过来的数据包
byte[] bytedate = new byte[1024];
string mydata;
void Start()
{
mystructs my; //将结构初始化 付给另一个
Age = my.Age = 17;
Name = my.name = " haha ";
Height = my.Height = 180.50f;
Debug.Log(Age + Name + Height);
byte[] agebyte = new byte[1024]; //定义二进制数组
byte[] namebyte = new byte[1024];
byte[] heightbyte = new byte[1024];
agebyte = Encoding.ASCII.GetBytes(Age.ToString()); //转换成二进制的
namebyte = Encoding.ASCII.GetBytes(Name);
heightbyte = Encoding.ASCII.GetBytes(Height.ToString());
bytedate = new byte[agebyte.Length + namebyte.Length + heightbyte.Length]; //byte
agebyte.CopyTo(bytedate, 0); //把值 拷贝 给bytedate 索引
namebyte.CopyTo(bytedate, agebyte.Length); //agebyte索引开始
heightbyte.CopyTo(bytedate, namebyte.Length);
//string sss = Encoding.ASCII.GetString(data);
// Debug.Log(sss); //得到本机IP,设置TCP端口号
ip = new IPEndPoint(IPAddress.Parse("192.168.1.120"), 12346);//设置自身的IP和端口号,在这里IPAddress.Any是自动获取本机IP
newsock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);//实例化socket对象设置寻址方案为internetwork(IP版本的4存放),设置Soket的类型,为Dgram(支持数据报形式的数据),设置协议的类型,为UDP
//绑定网络地址
newsock.Bind(ip);//绑定IP
Debug.Log("This is a Server,host name is " + Dns.GetHostName());//输出本地的名字
Debug.Log("Waiting for a client");
Thread test = new Thread(BeginListening);//定义一个子线程
test.Start();//子线程开始
}
void BeginListening()
{
// IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);//实例化一个网络端点,设置为IPAddress.Any为自动获取跟我通讯的IP,0代表所有的地址都可以
EndPoint Remote = (EndPoint)(ip);//实例化一个地址结束点来标识网络路径
Debug.Log(Encoding.ASCII.GetString(data, 0, recv));//输出二进制转换为string类型用来测试
while (true)
{
data = new byte[1024];//实例化data
recv = newsock.ReceiveFrom(data, ref Remote);//将数据包接收到的数据放入缓存点,并存储终节点
//Debug.Log(Encoding.ASCII.GetString(data, 0, recv));
mydata = Encoding.ASCII.GetString(data, 0, recv);
Debug.Log(mydata);
// newsock.SendTo(Encoding.ASCII.GetBytes(mydata),mydata.Length,SocketFlags.None,Remote);
} }
string input = "";
void SendMessage(string message)
{ byte[] data = new byte[1024];
byte[] messbyte = new byte[1024]; Debug.Log("This is a client,host name is " + Dns.GetHostName());
ip = new IPEndPoint(IPAddress.Parse("192.168.1.120"), 12345);
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
EndPoint ep = (EndPoint)ip;
//string welcome = "你好";
//data = Encoding.ASCII.GetBytes(welcome);
server.SendTo(data, data.Length, SocketFlags.None, ep);
messbyte = Encoding.ASCII.GetBytes(message);
data = new byte[bytedate.Length + messbyte.Length];
bytedate.CopyTo(data, 0);
messbyte.CopyTo(data, bytedate.Length); server.SendTo(data, ep);
data = new byte[1024];
Debug.Log("Stopping Client.");
server.Close(); }
void OnGUI()
{ input = GUILayout.TextField(input);
if (GUILayout.Button("发送"))
{
SendMessage(input);
}
}
void OnApplicationQuit()
{
newsock.Close();
} }

  

u3d udp服务器的更多相关文章

  1. C#的UDP服务器

    最新优化版本 /* http://www.cnblogs.com/zengqinglei/archive/2013/04/27/3046119.html */ using System; using ...

  2. windows下UDP服务器和客户端的实现

      UDP是面向非连接的协议,因此在实现UDP服务器时,服务器不用总是处于监听状态.可以直接收发数据.   服务器端   1.初始化 WASStartup ( ... )   2.创建Socket s ...

  3. Linux系统编程(37)—— socket编程之UDP服务器与客户端

    典型的UDP客户端/服务器通讯过程: 编写UDP Client程序的步骤 1.初始化sockaddr_in结构的变量,并赋值.这里使用"8888"作为连接的服务程序的端口,从命令行 ...

  4. 【实验 1-2】编写一个简单的 UDP 服务器和 UDPP 客户端程序。程序均为控制台程序窗口。

    1.服务器 #include<winsock2.h> //包含头文件#include<stdio.h>#include<windows.h>#pragma comm ...

  5. <摘录>详谈高性能UDP服务器的开发

    上一篇文章我详细介绍了如何开发一款高性能的TCP服务器的网络传输层.本章我将谈谈如何开发一个高性能的UDP服务器的网络层.UDP服务器的网络层开 发相对与TCP服务器来说要容易和简单的多,UDP服务器 ...

  6. 【卷二】网络三—UDP服务器与客户端

    这是另一个类型的服务器/客户端,无连接的 UDP: (User Datagram Protocol) 用户数据报协议 参考: P58~P60 UDP 时间戳服务器 [时间戳 就是ctime()显示的内 ...

  7. 安卓作为udp服务器,PC作为客户端,仅监听

    安卓客户端作为udp服务器,监听其他客户端的数据,测试已成功 本次实验所用数据: 安卓作为服务器: 端口:8888            IP:192.168.1.104 电脑作为客户端: 端口:50 ...

  8. udp服务器监听(多线程)

    项目一:udp1111 监听的有三个文件分别为: guiHello.java 有关界面和事件响应功能 UdpFunc.java是udp类的封装:发送和接收 udpServer.java是入口函数,无实 ...

  9. udp 服务器界面监听

    今天在做项目的时候,发现不同子网下是不能做UDP通信的,不知道是不是这样呢 遇到一个错误:eclipse遇到报错: The type JPEGImageEncoder is not accessibl ...

随机推荐

  1. deepNN

    不做卷积,只是增加多层神经网络层. #-*- encoding:utf-8 -*- #!/usr/local/env python import numpy as np import tensorfl ...

  2. [转] [Java] 知乎下巴第5集:使用HttpClient工具包和宽度爬虫

    原文地址:http://blog.csdn.net/pleasecallmewhy/article/details/18010015 下载地址:https://code.csdn.net/wxg694 ...

  3. mysqldump具体应用实例

    1.导出整个数据库  mysqldump -h主机 -u 用户名 -p 数据库名 > 导出的文件名      mysqldump -h127.0.0.1 -u wcnc -p smgp_apps ...

  4. 【WPF/WAF】使用System.Windows.Interactivity交互事件

    下载System.Windows.Interactivity.dll文件,并引入项目中(在VS项目的引用列表中可以看到).可在Nuget搜索System.Windows.Interactivity下载 ...

  5. am335x Watchdog 生效导致 LAN8710A action 异常

    原因是因为 watchdog 生效的时候,产生的 reset 信号,只有 2.5us 左右,太短了,导致 LAN8710a 未完全重启 在 kernel watchdog 里面增加下面的代码即可 86 ...

  6. hadoop rebalance

    之前一直没做过rebalance,以为速度很快,结果大意了,等到磁盘达到90%的时候,才开始做rebalance. 默认的从日志中可以看到总共需要迁移1.89T,但是每次只移动40G大小的量. 然后查 ...

  7. 【jquery】jquery 在 ie6 下无法设置 select 选中的解决方法

    本文主要解决在 ie6 下,jquery 无法设置 select 选中的问题.我们先看个例子: <!DOCTYPE HTML> <html lang="en-US" ...

  8. eclipse配置google代码风格

    1.下载google code style的xml文件 地址:https://github.com/google/styleguide 导入xml文件 可能会遇到警告: 版本的问题,忽略即可. < ...

  9. substance新版及问题

    新版地址:https://github.com/Insubstantial,目前是7.3版 http://stackoverflow.com/questions/3657538/substance-u ...

  10. 百度Ueditor设置图片自动压缩

    使用百度Ueditor插入图片的时候,如果图片大于你的编辑框宽度,下面会出现滚动条,如下图: 我们如何设置它的最大宽度为100%呢? 找到ueditor\ueditor.config.js,修改它的i ...