socket通信(C#)(二)

简介: socket通信(C#)

客户端(Client):

1:建立一个Socket对像;


2:用socket对像的Connect()方法以上面建立的EndPoint对像做为参数,向服务器发出连接请求;


3:如果连接成功,就用socket对像的Send()方法向服务器发送信息;


4:用socket对像的Receive()方法接受服务器发来的信息 ;


5:通信结束后一定记得关闭socket;


客户端编码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
namespace Socket_demo
{
    class Program
    {
        static Socket ClientSocket;
        static void Main(string[] args)
        {
            string IP = "127.0.0.1";
            int port = 8885;
            //将IP地址字符串转换成IPAddress实例
            IPAddress ip = IPAddress.Parse(IP);  
            //使用指定的地址簇协议、套接字类型和通信协议
            ClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            // 用指定的ip和端口号初始化IPEndPoint实例
            IPEndPoint endPoint = new IPEndPoint(ip, port); 
            ClientSocket.Connect(endPoint);  //与远程主机建立连接
            Console.WriteLine("开始发送消息");
            //通信时实际发送的是字节数组,所以要将发送消息转换字节
            byte[] message = Encoding.UTF8.GetBytes("客户端链接127.0.0.1:8885服务器");  
            ClientSocket.Send(message);
            Console.WriteLine("发送消息为:" + Encoding.UTF8.GetString(message));
            byte[] receive = new byte[1024];
            int length = ClientSocket.Receive(receive);//length 接收字节数组长度
            Console.WriteLine("接收消息为:" + Encoding.UTF8.GetString(receive));
            ClientSocket.Close();//关闭连接
        }
    }
}

启动Client客户端,访问服务器:


4.png


访问成功:

5.png



如果Server服务端未启动则为:

6.png



服务端Server接收到的消息:


7.png


创建socket线程

Thread t = new Thread(()=>{});


//将监听放在死循环内


while(true){undefined


       socket监听


}


//启动线程

t.Start();

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace Socket_Server
{
    class Program
    {
        static Socket ReceiveSocket;
        static void Main(string[] args)
        {
            //创建socket线程
            Thread t = new Thread(()=> {
                int port = 8885;
                //侦听所有网络客户接口的客活动
                IPAddress ip = IPAddress.Any;
                //使用指定的地址簇协议、套接字类型和通信协议   <br>            ReceiveSocket.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReuseAddress,true);
                //有关套接字设置
                ReceiveSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                IPEndPoint endPoint = new IPEndPoint(ip, port);
                ReceiveSocket.Bind(new IPEndPoint(ip, port)); //绑定IP地址和端口号
                ReceiveSocket.Listen(10);  //设定最多有10个排队连接请求
                Console.WriteLine("建立连接");
                while (true)
                {
                    Socket socket = ReceiveSocket.Accept();
                    byte[] receive = new byte[1024];
                    socket.Receive(receive);
                    Console.WriteLine("接收到消息:" + Encoding.UTF8.GetString(receive));
                    byte[] send = Encoding.UTF8.GetBytes("成功接收消息,并回发消息。");
                    socket.Send(send);
                    Console.WriteLine("发送消息为:" + Encoding.UTF8.GetString(send));
                }
            });
            //启动线程
            t.Start();
        }
    }
}


启动服务器,服务器端可以无限次数的接收客户端信息了。


8.png


到这里,Socket的基础技能讲解就完毕了,可以通过这个技能在工作中主要会进行推送功能编码,【推送】是一个非常重要的功能,你手机里的各种推送广告、APP的各种消息推送、最最基础的QQ、微信的聊天功能都依赖于此项技术。后面会对【Web Socket】进行讲解,关注好,后面直接查看此【分类专栏】即可。


作业项目,通过此demo,自行搭建Winform项目,进行Socket服务器端,与Client客户端,进行信息交互。


可以分开两个机器,使用【ipconfig】查看各自的IP,使用【ping】命令测试网络是否通畅,设置好对应的端口号进行相互访问即可完成通信功能。


相关文章
|
2月前
|
数据处理 C# C++
如何使用C#和C++结构体实现Socket通信
如何使用C#和C++结构体实现Socket通信
|
4月前
|
网络协议 程序员 Python
揭秘Python网络编程:深入理解Socket通信
在当今信息时代,网络通信已经成为人们生活中不可或缺的一部分。而Python作为一种高效、易用的编程语言,自然也能够很好地支持网络编程和Socket通信。本文将介绍Python网络编程与Socket通信的相关知识,包括Socket通信模型、Socket编程接口、网络套接字等内容。
|
4月前
|
网络协议 开发者 Python
Python网络编程与Socket通信:连接世界的无限可能
在当今数字化时代,Python作为一种强大的编程语言,通过网络编程与Socket通信为我们打开了连接世界的无限可能。本文将深入探讨Python网络编程的基础知识、Socket通信的原理以及实际应用,帮助读者更好地理解并运用这一技术。
|
4月前
|
网络协议
【Netty 网络通信】Socket 通信原理
【1月更文挑战第9天】【Netty 网络通信】Socket 通信原理
|
14天前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
|
19天前
|
C#
C# 使用Socket对接
C# 使用Socket对接
16 1
|
1月前
|
网络协议 Unix Linux
Socket通信详细介绍1
Socket通信详细介绍
31 0
|
3月前
|
C++
C++实现Socket连接通信
C++实现Socket连接通信
13 1
|
3月前
火山中文编程 -- 实现Socket通信
火山中文编程 -- 实现Socket通信
20 0