C/C++教程

客户端发送信息给服务器以及服务器接收客户端发来的信息(socket)

本文主要是介绍客户端发送信息给服务器以及服务器接收客户端发来的信息(socket),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

服务器端:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SOCKET网络编程
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnWatch_Click(object sender, EventArgs e)
        {
            //创建一个负责监听的Socket
            Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            //创建IP地址和端口号对象
            IPAddress ip = IPAddress.Any;//这句Any是获取自己当前本机的IP,
            //IPAddress ip=IPAdress.Parse(txtIP.Text); 这句是获取textbox里面输入的地址
            IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(txtPort.Text));//这里是获取文本框里输入的端口号,创建了一个端口对象,需要传入ip跟端口号
            //让负责监听的Socket绑定IP地址跟端口号
            socketWatch.Bind(point);
            ShowMsg("监听成功");
            //设置监听队列
            socketWatch.Listen(10);
            Thread th = new Thread(listen);
            th.IsBackground = true;
            th.Start(socketWatch);

        }
        void listen(object o)
        {
            Socket socketWatch = o as Socket;//as的用法就是如果可以的话,那就直接转换过去
            while (true)
            {
                //负责监听的Socket 来接收客户端的连接 创建跟客户端通信的Socket
                Socket socketSend = socketWatch.Accept();
                //如果接收成功,把发送端的地址显示出来
                ShowMsg(socketSend.RemoteEndPoint.ToString() + "连接成功");
                //客户端连接成功后,服务器应该接收客户端发来的消息
                //开启一个新线程,不停的接收客户端发来的信息
                Thread th = new Thread(Recive);
                th.IsBackground = true;
                th.Start(socketSend);

            }
        }
        /// <summary>
        /// 服务器端接收客户端发来的信息
        /// </summary>
        /// <param name="o"></param>
        void Recive(object s)
        {
            Socket socketSend = s as Socket;
            while (true)
            {
                //客户端连接成功后,服务器应该接收客户端发来的消息
                byte[] buffer = new byte[1024 * 1024 * 5];
                int r = socketSend.Receive(buffer); //实际接收到的字节数
                if(r==0)
                {
                    break;
                }
                string str = Encoding.UTF8.GetString(buffer, 0, r);//把接收到的字节转成字符串
                ShowMsg(socketSend.RemoteEndPoint + ":" + str);
            }
        }
        void ShowMsg(string str)
        {
            txtShow.AppendText(str + "\r\n");
        }


        private void Form1_Load(object sender, EventArgs e)
        {
            Control.CheckForIllegalCrossThreadCalls = false;
        }
    }
}
View Code

 

 

 

客户端:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 接收端
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        Socket sok = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        private void btnWatch_Click(object sender, EventArgs e)
        {

            IPAddress ip = IPAddress.Parse(txtIP.Text);
            IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(txtPort.Text));
            sok.Connect(point);
            ShowMsg("连接成功");





        }
        void ShowMsg(string str)
        {
            MessageBox.Show(str + "\r\n");
        }
        /// <summary>
        /// 客户端给服务器发送消息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            string str = txtSend.Text.Trim();
            byte[] buffer = System.Text.Encoding.UTF8.GetBytes(str);
            sok.Send(buffer);

        }
    }
}
View Code

 

这篇关于客户端发送信息给服务器以及服务器接收客户端发来的信息(socket)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!