zoukankan      html  css  js  c++  java
  • c++网络通信(与服务器通信聊天)和c#网络通信

    c++网络通信(有待整理)

    链接:http://pan.baidu.com/s/1i3nMLKT 密码:ksi8

    c#网络通信(tcp/udp两部分)

    TCP发送端:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net.Sockets;
    using System.Diagnostics;
    using System.IO;
    
    namespace tcpTest
    {
        class Program
        {
            static void Main(string[] args)
            {      
                TcpClient client = new TcpClient("127.0.0.1", 9000);
                NetworkStream stream = client.GetStream();
                //Byte[] btt = { 126, 12, 21, 32, 13 };               //以十进制的方式给Byte赋值后发送
                //Byte[] btt = { 0x7e,0x1c,0x15,0x20,0xd };      //以十六进制的方式给Byte赋值后发送
                string data = " 7e 1c 15 20 0d ";                    //将字符串转换后赋值给Byte再发送
                string[] numbers = data.Trim().Split(' ');
                List<byte> buffer = new List<byte>();
                foreach (string number in numbers)
                {
                    Byte aByte;
                    aByte = byte.Parse(number,System.Globalization.NumberStyles.AllowHexSpecifier);
                    buffer.Add(aByte);
                }
                Byte[] btt = buffer.ToArray();
                stream.Write(btt,0,btt.Length);
                foreach(Byte bt in btt)
                    Debug.WriteLine(bt.ToString("x"));
                client.Close();
                stream.Close();
            }
        }
    }

    TCP接收端:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net.Sockets;
    using System.Diagnostics;
    using System.IO;
    using System.Threading;
    using System.Net;
    
    namespace tcpTest
    {
        class Program
        {
          static  TcpListener listener;
          static Thread thread;
          static bool isLoop;
          static List<byte> Data = new List<byte>();
            static void Main(string[] args)
            {
                listener = new TcpListener(IPAddress.Parse("127.0.0.1"), 9000);
                listener.Start();                                                                                                  //定义、开始监听
                isLoop = true;
                thread = new Thread(new ThreadStart(BeginListen));
                thread.Start();
            }
        static  private void BeginListen()
            {
                NetworkStream stream;                                                                                    //重点1. 定义  流
                while (isLoop)
                {
                    List<byte> data = new List<byte>();
                    using (TcpClient client = listener.AcceptTcpClient())
                    {
                        byte bits;
                        int read;
                        stream = client.GetStream();
                        do
                        {
                            read = stream.ReadByte();         //重点2.获取数据字节
                            if (read != -1)
                            {
                                bits = byte.Parse(read.ToString("x"), System.Globalization.NumberStyles.AllowHexSpecifier);
                                data.Add(bits);
                            }
                        } while (read != -1);
                     }
                    if (data[0] == 0x7e)
                    {
                        Data.Clear();
                        Data.AddRange(data);
                    }
                    else
                    {
                        Data.AddRange(data);
                    }
                    if (data[data.Count-1] == 0x0d)
                    {
                        for (int i = 0; i < Data.Count;i++ )
                        {
                            string value = Data[i].ToString("X");
                            if (value.Length==1)
                            {
                                value = "0" + value;
                            }
                            Console.Write(value);
                        }
                        Console.WriteLine("+");                   
                    }
               }
            }
        }
    }

     结果图:

    工程文件地址:http://pan.baidu.com/s/1ntIhjGP 密码:7h0z

    UDP发送端:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net;
    using System.Net.Sockets;
    
    namespace client
    {
        class Program
        {
            static void Main(string[] args)
            {
                IPAddress HostIP =  IPAddress.Parse("127.0.0.1");
                IPEndPoint host = new IPEndPoint(HostIP, 9000);
                byte[] bytes= {0x1A,0x14,12,0x12};     //12转换为16进制就是c
                UdpClient uc = new UdpClient();
                int i = uc.Send(bytes,bytes.Length, host);
                Console.WriteLine(i);
            }
        }
    }

    UDP接收端:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net.Sockets;
    using System.Net;
    using System.Diagnostics;
    using System.Threading;
    
    namespace server
    {
        class Program
        {
            static IPAddress ip = IPAddress.Parse("127.0.0.3");
            static IPEndPoint receivePoint = new IPEndPoint(ip, 9000);       
            static void Main(string[] args)
            {
                Thread ath = new Thread(new ThreadStart(ReceiveData));
                ath.Start();          
            }
            static void ReceiveData()
            {
               UdpClient sv = new UdpClient( 9000);     
                while (true)
                {
                    try
                    {
                        byte[] recData = sv.Receive(ref receivePoint);     //receivePoint,获取发数据的地址。之后可以利用此地址回话。
                        if (recData.Length != 0)
                        {
                            foreach (byte b in recData)
                                Console.Write(b.ToString("x")+" ");    //以16进制的形式展示,没有"x"则显示的是10进制的显示
                            Console.WriteLine("数据来自于IP:"+receivePoint.Address.ToString()+"    端口:"+receivePoint.Port.ToString()); //不知道端口为什么会变?
                        }                    
                    }
                    finally
                    {
                       
                    }
                }           
            }
        }
    }

    结果截图:

    相关:http://my.oschina.net/Tsybius2014/blog/351974

    工程文件:链接:http://pan.baidu.com/s/1dDdLTV7 密码:3e8z

     一个关于字节的处理:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net.Sockets;
    using System.Diagnostics;
    using System.IO;
    
    namespace tcpTest
    {
        class Program
        {
            static void Main(string[] args)
            {
    
                byte[] bytes = File.ReadAllBytes("C:\Users\dell\Desktop\1.rar");   //文件到字节
                string stringByte = "";                                                                 //字节到字符串
                foreach (byte by in bytes)
                {
                    stringByte += by.ToString("X")+" " ;
                }
                //Debug.WriteLine(stringByte);                  //在此处可以将stringByte存储到数据库中,后续使用的时候在调出
                string[] temStr = stringByte.Trim().Split(' ');                                           //字符串到字节
                List<byte> listByte = new List<byte>();
                foreach (string tem in temStr)
                {
                    Byte aByte;
                    aByte = byte.Parse(tem, System.Globalization.NumberStyles.AllowHexSpecifier);
                    listByte.Add(aByte);
                }
                byte[] backToBytes = listByte.ToArray();
                // string  stt = System.Text.Encoding.Default.GetString(backToBytes);    //字节到对应的编码字符串,注意和上面的区分
                // Debug.WriteLine(stt);                                                                         
                // backToBytes = System.Text.Encoding.Default.GetBytes(stt);               //字符串到对应的编码字节
                File.WriteAllBytes("C:\Users\dell\Desktop\2.rar", listByte.ToArray());  
            }
        }
    }
    View Code

    TCP和UDP的区别:http://www.cnblogs.com/bizhu/archive/2012/05/12/2497493.html

  • 相关阅读:
    (转) Linux中profile、bashrc、bash_profile之间的区别和联系
    Ubuntu 安装MyEclipse10
    VMware_ubuntu设置共享文件夹
    (转载)Android出现“Read-only file system”解决办法
    Android 执行 adb shell 命令
    android传感器使用
    Android源码下载和编译过程
    jquery实现的ajax
    转载SQL_trace 和10046使用
    查看Oracle相关日志 ADRCI
  • 原文地址:https://www.cnblogs.com/lwngreat/p/4750241.html
Copyright © 2011-2022 走看看