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", );
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,,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"), );
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 != -)
{
bits = byte.Parse(read.ToString("x"), System.Globalization.NumberStyles.AllowHexSpecifier);
data.Add(bits);
}
} while (read != -);
}
if (data[] == 0x7e)
{
Data.Clear();
Data.AddRange(data);
}
else
{
Data.AddRange(data);
}
if (data[data.Count-] == 0x0d)
{
for (int i = ; i < Data.Count;i++ )
{
string value = Data[i].ToString("X");
if (value.Length==)
{
value = "" + 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, );
byte[] bytes= {0x1A,0x14,,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, );
static void Main(string[] args)
{
Thread ath = new Thread(new ThreadStart(ReceiveData));
ath.Start();
}
static void ReceiveData()
{
UdpClient sv = new UdpClient( );
while (true)
{
try
{
byte[] recData = sv.Receive(ref receivePoint); //receivePoint,获取发数据的地址。之后可以利用此地址回话。
if (recData.Length != )
{
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());
}
}
}

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

c++网络通信(与服务器通信聊天)和c#网络通信的更多相关文章

  1. 跨平台网络通信与服务器框架 acl 3.2.0 发布

    acl 3.2.0 版本发布了,acl 是 one advanced C/C++ library 的简称,主要包括网络通信库以及服务器框架库等功能,支持 Linux/Windows/Solaris/F ...

  2. windows phone 8.1开发:socket通信聊天

    本例用WPF程序做服务器端,windows phone程序做客户端.我们使用基于UDP协议的Socket通信.更多关于socket信息请查看:http://msdn.microsoft.com/zh- ...

  3. Android - 传统蓝牙通信聊天

    Android -传统蓝牙通信聊天 技术:java+Android4.4+jdk1.8 运行环境:Android4.4.Android7.0 概述 Android 传统蓝牙的使用,包括开关蓝牙.搜索设 ...

  4. AngularJs 与服务器通信 $http, $q, $resource

    $http服务是AngularJS系统自带的,可以用来进行网络通信.获取远程服务器的数据.要记住的是,$http是对浏览器XMLHttpRequest的封装,也就是说,它其实是Ajax. $http( ...

  5. 跨平台网络通信与服务器框架 acl 3.2.0 发布,acl_cpp 是基于 acl 库的 C++ 库

    acl 3.2.0 版本发布了,acl 是 one advanced C/C++ library 的简称,主要包括网络通信库以及服务器框架库等功能,支持 Linux/Windows/Solaris/F ...

  6. Google Play Store —与google服务器通信时出现问题

    机子:MX4 前几天刷完机后出现登录Google Play Store “与google服务器通信时出现问题”,今天试了好几种方法,来总结一下 1.修改最新Hosts文件 2.SmartHosts   ...

  7. Android操作HTTP实现与服务器通信(转)

    Android操作HTTP实现与服务器通信   本示例以Servlet为例,演示Android与Servlet的通信. 众所周知,Android与服务器通信通常采用HTTP通信方式和Socket通信方 ...

  8. vuejs与服务器通信

    vuejs与服务器通信 与服务器通信 Vue 实例的原始数据 $data 能直接用 JSON.stringify() 序列化.社区贡献了一个插件 vue-resource,提供一种容易的方式与 RES ...

  9. 通信服务器群集——跨服务器通信Demo(源码)

    对于一些基于TCP Socket的大型C/S应用来说,能进行跨服务器通信可能是一个绕不开的功能性需求.出现这种需求的场景类似于下面描述的这种情况. 假设,我们一台TCP应用服务器能同时承载10000人 ...

随机推荐

  1. sql 时间(datetime)计算

    SELECT *FROM sc_sowu_orderreturnWHERE STATUS = '0'AND submit_time < DATE_ADD(now(), INTERVAL - 4 ...

  2. 常用JQuery插件

    虽然自己也写过插件,但JQuery插件种类的繁多,大多时候,我还是使用别人写好的插件,这些都是我用了同类插件里较为不错的一些,今天就整理一下公开放出来. UI: jquery.HooRay(哈哈,自己 ...

  3. 键盘unicode值对照表

    A:65 B:66 C:67 D:68 E:69 F:70 G:71 H:72 I:73 J:74 K:75 L:76 M:77 N:78 O:79 P:80 Q:81 R:82 S:83 T:84 ...

  4. mysql 建表、查表、查表结构

    进入数据库: mysql> use sunshine_blog;输出: Database changed 查数据库表: mysql> show tables;输出: +---------- ...

  5. Ztorg木马分析: 从Android root木马演变到短信吸血鬼

    本月第二次,Google 从官方应用商店 Google Play 中移除了伪装成合法程序的恶意应用.被移除的应用都属于名叫 Ztorg 的 Android 恶意程序家族.目前为止,发现的几十个新的Zt ...

  6. Java 测试驱动开发--“井字游戏” 游戏实战

    TDD 介绍 TDD是测试驱动开发(Test-Driven Development)的英文简称,是敏捷开发中的一项核心实践和技术,也是一种设计方法论.TDD的原理是在开发功能代码之前,先编写单元测试用 ...

  7. E - Elevator

    E - Elevatorhttp://codeforces.com/gym/241680/problem/E同余最短路,从0~a-1中每一个i向(i+b)%a连一条权值为b的边,向(i+c)%a连一条 ...

  8. 服务器被minerd

    cd /opt chmod -x minerd 去/root/.ssh 目录下,清除authorized_keys,KHK75NEOiq 文件 在ssh的配置文件/etc/ssh/sshd_confi ...

  9. Post四种Content-Type

    application/x-www-form-urlencoded 这应该是最常见的 POST 提交数据的方式了.浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 app ...

  10. C# WPF 文件复制,相对路径

    /// <summary> /// 下载/复制 /// </summary> /// <param name="sender"></par ...