服务器:
emm编写服务器我用的是unity自带的MonoDevelop
该打开位置在电脑安装的unity位置/MonoDevelop
打开后File->New->Solution
using System.Net.Sockets;
namespace EchoServer
{
class MainClass
{
public static void Main (string[] args)
{
//定义套接字
Socket listenfd = new Socket (AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
//设置套接字和IP端口,并进行绑定
IPAddress ipAdr = IPAddress.Parse ("10.32.3.208");
IPEndPoint ipEP = new IPEndPoint (ipAdr,8888);
listenfd.Bind (ipEP);
//开启监听,数字表示限制的连接数
listenfd.Listen (0);
Console.WriteLine ("服务器启动成功");
//连接成功后
while (true) {
//进行接收
Socket connfd = listenfd.Accept ();
Console.WriteLine ("服务器接收");
//将接受的数据转化为文字显示输出
byte[] readBuff=new byte[1024];
int count = connfd.Receive (readBuff);
string readStr = System.Text.Encoding.Default.GetString (readBuff,0,count);
Console.WriteLine (readStr);
//发送数据
byte[] sendBytes = System.Text.Encoding.Default.GetBytes (readStr);
connfd.Send (sendBytes);
}
}
}
}
客户端:
我这里在unity里只是简单的搞了两个按钮,一个text用于显示接收数据,一个InputField用于输入发送文本。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Net.Sockets;
using UnityEngine.UI;
public class Echo : MonoBehaviour {
/// <summary>
/// 定义套接字
/// </summary>
Socket F_socket;
/// <summary>
/// UI文本输入
/// </summary>
public InputField F_input;
public Text F_text;
/// <summary>
/// 连接网络
/// </summary>
public void Collection()
{
//配置地址族、套接字类型、协议
//地址族:InterNetwork-IPv4,InterNetworkV6-IPv6
//套接字类型:通常使用Stream,Dgram、Raw、RDM、Seqpacket、Unknown
//协议:通常使用TCP,GGP、ICMP、ICMPv6、IP、Internet、PARC、RAW、UDP、Unknown、Unspecified
F_socket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
//连接服务器
F_socket.Connect("10.32.3.208",8888);
}
/// <summary>
/// 发送文字
/// </summary>
public void Send()
{
//获取发送的文本
string sendStr = F_input.text;
//文本转换为byte串
byte[] sendBytes = System.Text.Encoding.Default.GetBytes(sendStr);
//发送字节流
F_socket.Send(sendBytes);
//接收字节流
byte[] readBuff = new byte[1024];
//获取字节流长度
int count = F_socket.Receive(readBuff);
//将字节流转化为字符串
string recvStr = System.Text.Encoding.Default.GetString(readBuff, 0, count);
F_text.text = recvStr;
//关闭连接
F_socket.Close();
}
}
最后测试结果: