120 lines
3.5 KiB
C#
120 lines
3.5 KiB
C#
using System;
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using System.Net.Sockets;
|
||
using System.Net;
|
||
using System.Threading;
|
||
using UnityEngine;
|
||
using UnityEngine.Windows;
|
||
using System.Text;
|
||
|
||
public class TcpConnect : MonoBehaviour
|
||
{
|
||
private string staInfo = "NULL"; //状态信息
|
||
private string inputIp = "127.0.0.1"; //输入ip地址
|
||
private string inputPort = "8080"; //输入端口号
|
||
public string inputMes = "NULL"; //发送的消息
|
||
private int recTimes = 0; //接收到信息的次数
|
||
private string recMes = "NULL"; //接收到的消息
|
||
private Socket socketSend; //客户端套接字,用来链接远端服务器
|
||
private bool clickSend = false; //是否点击发送按钮
|
||
void InitConnect()
|
||
{
|
||
try
|
||
{
|
||
int _port = Convert.ToInt32(inputPort);//获取端口号
|
||
string _ip = inputIp;//获取ip地址
|
||
//创建客户端Socket,获得远程ip和端口号
|
||
socketSend = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||
IPAddress ip = IPAddress.Parse(_ip);
|
||
IPEndPoint point = new IPEndPoint(ip, _port);
|
||
|
||
socketSend.Connect(point);
|
||
Debug.Log("连接成功 , " + " ip = " + ip + " port = " + _port);
|
||
staInfo = ip + ":" + _port + " 连接成功";
|
||
|
||
Thread r_thread = new Thread(ReceivedMessage);//开启新的线程,不停的接收服务器发来的消息
|
||
r_thread.IsBackground = true;
|
||
r_thread.Start();
|
||
|
||
|
||
Thread s_thread = new Thread(SendMessage); //开启新的线程,不停的给服务器发送消息
|
||
s_thread.IsBackground = true;
|
||
s_thread.Start();
|
||
}
|
||
catch (Exception)
|
||
{
|
||
Debug.Log("IP或者端口号错误......");
|
||
staInfo = "IP或者端口号错误......";
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 接收服务端返回的消息
|
||
/// </summary>
|
||
void ReceivedMessage()
|
||
{
|
||
while (true)
|
||
{
|
||
byte[] buffer = new byte[1024 * 6];
|
||
int len = socketSend.Receive(buffer);
|
||
if (len == 0)
|
||
{
|
||
break;
|
||
}
|
||
recMes = Encoding.UTF8.GetString(buffer, 0, len);
|
||
Debug.Log("客户端接收到的数据 : " + recMes);
|
||
recTimes++;
|
||
staInfo = "接收到一次数据,接收次数为 :" + recTimes;
|
||
Debug.Log("接收次数为:" + recTimes);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 向服务器发送消息
|
||
/// </summary>
|
||
void SendMessage()
|
||
{
|
||
|
||
try
|
||
{
|
||
while (true)
|
||
{
|
||
clickSend = false;
|
||
string msg = inputMes;
|
||
byte[] buffer = new byte[1024 * 6];
|
||
buffer = Encoding.UTF8.GetBytes(msg);
|
||
socketSend.Send(buffer);
|
||
Debug.Log("发送的数据为:" + msg);
|
||
}
|
||
}
|
||
catch (Exception)
|
||
{
|
||
}
|
||
}
|
||
|
||
|
||
private void OnDisable()
|
||
{
|
||
Debug.Log("begin OnDisable()");
|
||
if (socketSend.Connected)
|
||
{
|
||
try
|
||
{
|
||
socketSend.Shutdown(SocketShutdown.Both); //禁用Socket的发送和接收功能
|
||
socketSend.Close(); //关闭Socket连接并释放所有相关资源
|
||
}
|
||
catch (Exception e)
|
||
{
|
||
print(e.Message);
|
||
}
|
||
}
|
||
Debug.Log("end OnDisable()");
|
||
}
|
||
|
||
private void OnApplicationQuit()
|
||
{
|
||
OnDisable();
|
||
}
|
||
}
|