C#下用TcpClient传输数组
来源:互联网 发布:苹果mac系统修复教程 编辑:程序博客网 时间:2024/05/18 02:52
这个还算简单,在C#中用TcpListener TcpClient NetworkStream这三个类可以很好的实现服务端和客户端的通信。至于传送对象类型就要用到序列化和反序列化了。关于这方面的文章可见冰点的《C# 序列化和反序列化Oject》http://blog.myspace.cn/index.cfm?fuseaction=blog.view&friendID=1306783616&blogID=401530033
下面又开始贴代码-_-!
服务端
- using System;
- using System.Net;
- using System.Net.Sockets;
- using System.IO;
- using System.Text;
- using System.Runtime.Serialization.Formatters.Binary;
- using System.Runtime.Serialization;
- namespace SocketDis
- {
- class server
- {
- static void Main()
- {
- TcpListener listener = new TcpListener(6161);
- listener.Start();
- Console.Write("等待连接.................");
- TcpClient client = listener.AcceptTcpClient();
- Console.WriteLine("已连接.");
- NetworkStream ns = client.GetStream();
- try
- {
- //反序列化
- IFormatter formatter = new BinaryFormatter();
- int[] a=((int[])formatter.Deserialize(ns));
- //计算结果
- int result = cout(a);
- //序列化并回发数据
- formatter = new BinaryFormatter();
- formatter.Serialize(ns, result);
- }
- catch (Exception e)
- {
- Console.WriteLine(e.ToString());
- }
- Console.ReadKey(true);
- }
- /// <summary>
- /// 计算
- /// </summary>
- /// <param name="data">需要计算的数组</param>
- /// <returns>计算结果</returns>
- public static int cout(int[] data)
- {
- int total = 0;
- foreach (int b in data)
- {
- total += b;
- }
- return total;
- }
- }
- }
客户端:
- using System;
- using System.Net;
- using System.Net.Sockets;
- using System.Threading;
- using System.IO;
- using System.Text;
- using System.Runtime.Serialization.Formatters.Binary;
- using System.Runtime.Serialization;
- namespace SocketDis
- {
- class client
- {
- static void Main()
- {
- string ip = "127.0.0.1";
- string port = "6161";
- IPAddress serverIp = IPAddress.Parse(ip);
- int serverPort = Convert.ToInt32(port);
- IPEndPoint iep = new IPEndPoint(serverIp, serverPort);//主机终结点
- TcpClient client = new TcpClient();
- client.Connect(iep);//连接服务端
- NetworkStream ns = client.GetStream();//网络数据流
- int[] data ={100,234,116};
- //序列化数组并发送
- IFormatter formatter = new BinaryFormatter();
- formatter.Serialize(ns, data);
- Console.WriteLine("等待主机返回结果......");
- Thread.Sleep(1000);
- formatter = new BinaryFormatter();
- int result = (int)formatter.Deserialize(ns);
- Console.WriteLine("计算结果是:"+result.ToString());
- Console.ReadKey(true);
- }
- }
- }
- C#下用TcpClient传输数组
- C# TcpClient网络编程传输文件
- c# tcpclient
- C# TcpClient网络编程传输文件(带文件名)(必须看)
- C#的TCPClient连接
- C# concise asynchronous TcpClient
- 使用Net.Sockets.TcpListener和Net.Sockets.TcpClient进行图片传输时如何精确控制接收缓存数组大小
- C# .net TCPClient 网络监听
- c# socket 、TCPClient、TCPListen…
- C# 之 TcpClient和Socket
- C# 之TcpClient和Socket
- C# 之 TcpClient和Socket
- TCPClient
- c# Winform 下 的ftp传输控制
- C# 使用TcpClient 获取邮件列表
- 一、C#网络编程(TcpListener,TcpClient)
- 二、C#网络编程2(TcpListener,TcpClient)
- C#使用TcpClient实现telnet功能
- WebBrowser的用法
- IT人士群聚喝酒的讲究
- 世界上最遥远的距离
- Asp.net 中按钮的前台和后台事件
- 如何控制WebBrowser,并使其提交其中的网页或者操纵其中的文本框等?
- C#下用TcpClient传输数组
- 同步机制及windows同步函数的使用收藏
- Webbrowser控件 怎么样禁用ActiveX [已结贴,结贴人:kingfun]
- Oracle客户端NLS_LANG设置
- 请问高手怎样才能枚举出网页中所有“输入框”位置(包括IFRAME中),在线等
- 关于一个枚举IE表单的DLL,编译无错,但是得不到想到的结果。
- GIS应用八件新衣
- 如何使应用程序具有脚本支持功能收藏
- 解析v$log/v$logfile中status列值的含义