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. opencv项目报错_pFirstBlock==pHead解决办法

    备注: 我上次遇到这个问题的原因是项目设置为MTd导致的 OpenCV是MTd的,我要是改成MDd就编译报错,所以不能采用把项目改为MDd的办法,只能把OpenCV重新编译为MDd的,下载CMAKE, ...

  2. iOS 导航栏返回到指定页面的方法和理解

    关于ios中 viewcontroller的跳转问题,其中有一种方式是采用navigationController pushViewController 的方法,比如我从主页面跳转到了一级页面,又从一 ...

  3. spring data jpa的update操作

    简介 使用jpa进行update操作主要有两种方式: 1.调用保存实体的方法 1)保存一个实体:repository.save(T entity) 2)保存多个实体:repository.save(I ...

  4. Android 提示应用“正在发送大量短信”的解决办法

    . . . . . 临近过年了,又到了发送各类拜年短信的时刻了.虽然转发各类拜年短信已经显得越来越没年味,但是依然有很对人乐此不疲.为朋友送去祝福自然是好事,可是转发来的短信本身发送者就并没有投入太多 ...

  5. web前端开发与iOS终端开发的异同[转]

    * {-webkit-tap-highlight-color: rgba(0,0,0,0);}html {-webkit-text-size-adjust: none;}body {font-fami ...

  6. 从零写Java Web框架——实现Ioc依赖注入

    大概思路 通过读取配置文件,获取框架要加载的包路径:base-package,类似于 Spring 配置文件中的: <context:component-scan base-package=&q ...

  7. [服务]Crontab和每隔10S执行一次

    转自:https://www.cnblogs.com/juandx/archive/2015/11/24/4992465.html linux下定时执行任务的方法  在LINUX中你应该先输入cron ...

  8. 获取linux内核的配置项(包含模块module)_转

    转自:提取已有的内核配置文件 由于有时候所做的内核配置文件需要移植到其他的内核源码中,此时又忘了保存,这时以下方法就可以满足你了. 1.首先这两个配置的位于(init/Kconfig): 2. 如果要 ...

  9. fast neural style transfer图像风格迁移基于tensorflow实现

    引自:深度学习实践:使用Tensorflow实现快速风格迁移 一.风格迁移简介 风格迁移(Style Transfer)是深度学习众多应用中非常有趣的一种,如图,我们可以使用这种方法把一张图片的风格“ ...

  10. 【转】一篇文章读懂人力资源三支柱体系(COE・BP・SSC)

    通过人力资源转型,提升效率和效能   作者:Sharon Li,翰威特大中华区咨询总监. 杰克韦尔奇曾说过“人力资源负责人在任何企业中都应该是第二号人物”,但在中国,99%的企业都做不到.原因很简单, ...