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. Mysql异常问题排查与处理——mysql的DNS反向解析和客户端网卡重启

    中午刚想趴一会,不料锅从天降!!!Mysql连不上了....... 现象如下: 现象1:登录mysql所在服务器,连接MySQL 成功: 现象2:通过客户端远程连接MySQL,返回失败,如下: Ent ...

  2. java中定义enum示例

    /** * Enumeration for the message delivery mode. Can be persistent or * non persistent. Use the meth ...

  3. Spring Batch中job的启动,停止,放弃操作

    1,启动一个job 运行一个批处理任务至少有两点要求:一个 JobLauncher 和一个用来运行的 job .它们都包含了相同或是不同的 context .举例来说,从命令行来启动job,会为每一个 ...

  4. JAVA-JSP动作元素之plugin、params、fallback

    相关资料:<21天学通Java Web开发> 结果总结:1.<jsp:plugin>.<jsp:params>.<jsp:fallback>三个动作元素 ...

  5. Node.js学习笔记(4)--简单路由,老师学生id

    说明(2017-5-2 17:57:23): 1. foo.js var http = require("http"); var url = require("url&q ...

  6. iOS 设置导航栏全透明

    - (void)viewWillAppear:(BOOL)animated{ //设置导航栏背景图片为一个空的image,这样就透明了 [self.navigationController.navig ...

  7. markdown学习资料

    参考资料 Markdown--入门指南 Markdown 语法手册 (完整整理版)

  8. spring websocket + stomp 实现广播通信和一对一通信<转>

    spring对于基于stomp协议的websocket通信,其官网上面有一个guide,但是根据guide你只能写出来广播方式的通信,不能实现一对一的通信,这篇文章在这里把广播和一对一一起整理一下给大 ...

  9. win10里如何在中文输入法里添加美国键盘

    在控制面板打开“时钟.语言和区域”设置界面,选中“语言”设置   “语言”设置里点击“添加语言”   在添加语言设置里选择“英语”,并点击“打开”按钮,在“区域变量”设置页面里选择“英语(美国)” , ...

  10. Java编程的逻辑 (75) - 并发容器 - 基于SkipList的Map和Set

    ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...