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", );
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#网络通信的更多相关文章
- 跨平台网络通信与服务器框架 acl 3.2.0 发布
acl 3.2.0 版本发布了,acl 是 one advanced C/C++ library 的简称,主要包括网络通信库以及服务器框架库等功能,支持 Linux/Windows/Solaris/F ...
- windows phone 8.1开发:socket通信聊天
本例用WPF程序做服务器端,windows phone程序做客户端.我们使用基于UDP协议的Socket通信.更多关于socket信息请查看:http://msdn.microsoft.com/zh- ...
- Android - 传统蓝牙通信聊天
Android -传统蓝牙通信聊天 技术:java+Android4.4+jdk1.8 运行环境:Android4.4.Android7.0 概述 Android 传统蓝牙的使用,包括开关蓝牙.搜索设 ...
- AngularJs 与服务器通信 $http, $q, $resource
$http服务是AngularJS系统自带的,可以用来进行网络通信.获取远程服务器的数据.要记住的是,$http是对浏览器XMLHttpRequest的封装,也就是说,它其实是Ajax. $http( ...
- 跨平台网络通信与服务器框架 acl 3.2.0 发布,acl_cpp 是基于 acl 库的 C++ 库
acl 3.2.0 版本发布了,acl 是 one advanced C/C++ library 的简称,主要包括网络通信库以及服务器框架库等功能,支持 Linux/Windows/Solaris/F ...
- Google Play Store —与google服务器通信时出现问题
机子:MX4 前几天刷完机后出现登录Google Play Store “与google服务器通信时出现问题”,今天试了好几种方法,来总结一下 1.修改最新Hosts文件 2.SmartHosts ...
- Android操作HTTP实现与服务器通信(转)
Android操作HTTP实现与服务器通信 本示例以Servlet为例,演示Android与Servlet的通信. 众所周知,Android与服务器通信通常采用HTTP通信方式和Socket通信方 ...
- vuejs与服务器通信
vuejs与服务器通信 与服务器通信 Vue 实例的原始数据 $data 能直接用 JSON.stringify() 序列化.社区贡献了一个插件 vue-resource,提供一种容易的方式与 RES ...
- 通信服务器群集——跨服务器通信Demo(源码)
对于一些基于TCP Socket的大型C/S应用来说,能进行跨服务器通信可能是一个绕不开的功能性需求.出现这种需求的场景类似于下面描述的这种情况. 假设,我们一台TCP应用服务器能同时承载10000人 ...
随机推荐
- mysql按月,按日分组统计数据
group by DATE_FORMAT(createtime,'%Y-%m');//按月统计数据 group by DATE_FORMAT(createtime,'%Y-%m-%d');//按天统计 ...
- Java 枚举随笔
public enum Color{ //定义枚举并赋值 RED("红色", 1), Blue("蓝色", 2), Yellow("黄色", ...
- [Head First Python]4. summary
1- strip()方法可以从字符串去除不想要的空白符 (role, line_spoken) = each_line.split(":", 1) line_spoken = li ...
- 问题汇总-20130927-关于rc.local命令无法执行
场景:/etc/rc.local有语句 /usr/local/apache/bin/apachectl start mysql cactidb -u root -p123456 -e ' set gl ...
- [转] Lisp语言:Do循环的使用
转自http://blog.csdn.net/keyboardota/article/details/8240250 有关Lisp语言中的Do循环,就像很多人说的一样,初看起来太奇怪了,不知道怎么理解 ...
- BZOJ 2535 Plane 航空管制2
http://www.lydsy.com/JudgeOnline/problem.php?id=2535 思路:对于1,我们只需要每个点比前驱大就可以了,然后满足尽量优. 对于第二问,我们先求出这个点 ...
- 关于Keil C51中using关键字的使用心得
刚才看到一位很牛的师兄写的一篇日志中提到了Keil C51中using这个关键字的用法,粗心的我本来一直都没有留意它是用来干嘛的(因为我一般看见它都是在中断服务函数的定义开头处,好像没有了它也可以中断 ...
- C# 文件/文件夹压缩
一.ZipFile ZipFile类用于选择文件或文件夹进行压缩生成压缩包. 常用属性: 属性 说明 Count 文件数目(注意是在ComitUpdat之后才有) Password 压缩包密码 Siz ...
- C# log Helper
using System; using System.Collections.Generic; using System.Text; using System.Data.SqlClient; usin ...
- css案例学习之通过relative与absolute实现带说明信息的菜单
效果如下 代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...