游戏开发服务器入门笔记1-同步连接

服务器:
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();
    }
}

最后测试结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值