网络编程SOCKET实现一对一网络聊天,Ctrl+F5

13 篇文章 0 订阅
4 篇文章 0 订阅
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;
/// <summary>
/// 服务器
/// </summary>
namespace Lesson2
{
    class Program
    {
        static void Main( string [] args)
        {
            //实例化类对象
            Program program = new Program ();
            Console .WriteLine( "请选择:1 服务器。 2 客户端。" );
            string input = Console .ReadLine();
            if (input == "1" )
            {
                Console .WriteLine( "您的选择是服务器" );
               // MyServer();如果想调用 需要把MyServer();共有静态方法
               //调用服务器方法
                program.MyServer();
            }
            if (input == "2" )
            {
                Console .WriteLine( "您的选择是客户端" );
                //调用客户端方法
                program.Clinet();
            }
        }
  
        /// <summary>
        /// 服务端
        /// </summary>
    void MyServer()
    {
        //1.创建socket
        Socket socket = new Socket ( AddressFamily .InterNetwork, SocketType .Stream, ProtocolType .Tcp);
            //2.创建scoket和端口号使用bind方法
            //192.168.25.159是自己的地址
            IPAddress ipAddress = IPAddress .Parse( "192.168.XX.XXX" ); //("192.168.25.81");//("192.168.25.159");
            IPEndPoint ipEndPoint = new IPEndPoint (ipAddress, 10001);
            socket.Bind(ipEndPoint);
            //3监听该端口号 listen
            //监听35个客户端
            socket.Listen(35);
            //3.1接受来自客户端的请求
            byte [] mybyte = new byte [1024];
            try
            {
                //阻塞的过程
                Socket tempSocket=socket.Accept();
                while ( true )
                {
                    //接受数据的长度,长度就是dataLength
                    int dataLength = tempSocket.Receive(mybyte);
                    //只取从0开始数据长度的一段信息,data是客户端发来的消息
                    string data = Encoding .UTF8.GetString(mybyte,0, dataLength);
                    Console .WriteLine( "从客户端发来的消息为:" +data);
                    //通用字符集(Universal Character Set)  UTF abbr. Unicode转换格式(UCS Transformation Format)
                    //发送一下数据      编码   
                    byte [] sendData = Encoding .UTF8.GetBytes( "发送成功" );
                    tempSocket.Send(sendData);
                }
            }
            catch ( Exception e)
            {
                Console .WriteLine(e.Message);
                //throw;
            }
            finally {
                //最后,执行,关闭Socket
                socket.Close();
            }
        }
   
    //客户端
    void Clinet() {
            //1.创建socket
            Socket socket = new Socket ( AddressFamily .InterNetwork, SocketType .Stream, ProtocolType .Tcp);
            //2.使用connect连接制定计算机的端口
            //192.168.25.81服务器地址
            IPAddress ipAddress = IPAddress .Parse( "192.168.XX.XXX" );
            IPEndPoint ipEndPoint = new IPEndPoint (ipAddress, 10001);
            socket.Connect(ipEndPoint);
        try
        {
                string input= string .Empty;
            while (input!= "2" )
            {
                    //
                    Console .WriteLine( "请输入您要发送的信息" );
                    string msg = Console .ReadLine();
                    //Empty,空的
                    if (msg!= string .Empty) //空的时候用双引号“”表示  用null?
                    {
                        //3.发送数据
                        byte [] sendData = Encoding .UTF8.GetBytes(msg);
                        socket.Send(sendData);
                        //接受到的数据
                        byte [] receiveData = new byte [1024];
                        int length = socket.Receive(receiveData);
                        string str = Encoding .UTF8.GetString(receiveData,0,length);
                        Console .WriteLine(str);
                    }
                    Console .WriteLine( "是否继续:1继续。 2:退出。" );
                    input = Console .ReadLine();
            }
        }
        catch ( Exception e)
        {
            Console .WriteLine(e.Message);
        }
        finally {
            //关闭
            socket.Close();
        }
      
    }
    }
}
socket是TCP/IP协议的API

TCP是数据的介质,Socket是TCP的介质.
随后会更新TCP一对一聊天室;
可爱的双斜杠很多,同学们很好理解的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Batman1208

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值