我们有了服务器之后我们便可以去向服务器发送数据啦~~~
同样客户端我仍旧会使用异步的发送去发送和接收数据.
话不多说,直接上代码吧~~~
using UnityEngine;
using System.Net.Sockets;
using System;
public class Test : MonoBehaviour
{
private const string IP = "127.0.0.1";
private const int Port = 8888;
//定义套接字
private Socket socket;
//接收缓冲区
private byte[] readBuff = new byte[1024];
private string recvStr = "";
//连接服务器
public void Connetion()
{
//Socket
socket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
socket.BeginConnect(IP, Port, ConnectCallback, socket);
}
//Connect回调
public void ConnectCallback(IAsyncResult ar)
{
try
{
Socket socket = (Socket) ar.AsyncState;
socket.EndConnect(ar);
Debug.Log("Socket Connect Succ ");
socket.BeginReceive(readBuff, 0, 1024, 0,
ReceiveCallback, socket);
}
catch (SocketException ex)
{
Debug.Log("Socket Connect fail" + ex.ToString());
}
}
//Receive回调
public void ReceiveCallback(IAsyncResult ar)
{
try
{
Socket socket = (Socket) ar.AsyncState;
int count = socket.EndReceive(ar);
string s = System.Text.Encoding.UTF8.GetString(readBuff, 0, count);
recvStr = s + "\n" + recvStr;
Debug.Log("接收到的服务器发送过来的数据为:" + recvStr);
socket.BeginReceive(readBuff, 0, 1024, 0,
ReceiveCallback, socket);
}
catch (SocketException ex)
{
Debug.Log("Socket Receive fail" + ex.ToString());
}
}
//发送消息到服务器
public void Send()
{
//Send
string sendStr = "这是发送的测试数据呀";
byte[] sendBytes = System.Text.Encoding.UTF8.GetBytes(sendStr);
socket.BeginSend(sendBytes, 0, sendBytes.Length, 0, SendCallback, socket);
}
//Send回调
public void SendCallback(IAsyncResult ar)
{
try
{
Socket socket = (Socket) ar.AsyncState;
int count = socket.EndSend(ar);
Debug.Log("Socket Send succ " + count);
}
catch (SocketException ex)
{
Debug.Log("Socket Send fail" + ex.ToString());
}
}
}