.Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--使用封装的网络服务2[使用IE浏览本页]

原创 2012年03月28日 10:13:20

直接使用Socket做客户端,采用Udp

客户端代码:

示范代码using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using TcpLabCommon;
using System.Net;

namespace UdpLabClient1
{
    class Program
    {
        static void Main(string[] args)
        {

            Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            EndPoint endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 6000);
            //socket.Bind(endPoint);

            NetPacketService packetSvr = new NetPacketUdpService(socket, endPoint);

            for (int i = 0; i < 10; i++)
            {

                packetSvr.SendObject(new Book { Title = "Java编程思想_" + i, Price = i + 1 });


                packetSvr.SendText("jiang_" + i);
            }

            packetSvr.SendFile(@"E:\简单工厂参考.txt");



            Console.ReadLine();
        }
    }
}

 

 

服务端代码:

示范代码using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;
using TcpLabCommon;
using System.IO;

namespace UdpLabSvr1
{
    class Program
    {
        static void Main(string[] args)
        {
            Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"),6000);
            serverSocket.Bind(endPoint);
            
            NetPacketService packetSvr = new NetPacketUdpService(serverSocket,endPoint);
            
            do
            {
                NetPacket packet = packetSvr.ReceivePacket();
                switch (packet.PacketHead.PType)
                {
                    case PacketType.STRING:
                        Console.WriteLine(Convert.ToString(packet.Data));
                        break;
                    case PacketType.BINARY:
                        NetFile f = packetSvr.ParseFile((Byte[])packet.Data);
                        Console.WriteLine("成功接收文件:" + f.FileName);
                        FileStream fs = new FileStream(f.FileName, FileMode.Create);
                        fs.Write(f.Content, 0, f.Content.Length);
                        fs.Flush();
                        fs.Close();
                        break;
                    case PacketType.COMPLEX:
                        Book book = packet.Data as Book;
                        Console.WriteLine(book.Title + "\t" + book.Price);
                        break;
                    default:
                        break;
                }
            } while (true);
        }
    }
}

 

//----------------------------------------------------------------------------------------------------------------------------------------

采用UdpClient做客户端和服务端,简化代码:

客户端代码:

示范代码using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;
using TcpLabCommon;

namespace UdpLabClient2
{
    class Program
    {
        static void Main(string[] args)
        {
            //Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 6000);
            //socket.Bind(endPoint);

            UdpClient udpClient = new UdpClient();

            NetPacketService packetSvr = new NetPacketUdpService(udpClient.Client, endPoint);

            for (int i = 0; i < 10; i++)
            {

                packetSvr.SendObject(new Book { Title = "Java编程思想_" + i, Price = i + 1 });


                packetSvr.SendText("jiang_" + i);
            }

            packetSvr.SendFile(@"E:\简单工厂参考.txt");



            Console.ReadLine();
        }
    }
}

 

服务端代码:

示范代码using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;
using TcpLabCommon;
using System.IO;

namespace UdpLabSvr2
{
    class Program
    {
        static void Main(string[] args)
        {
            //Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 6000);
            //serverSocket.Bind(endPoint);

            UdpClient udpClient = new UdpClient(endPoint);


            NetPacketService packetSvr = new NetPacketUdpService(udpClient.Client, endPoint);

            do
            {
                NetPacket packet = packetSvr.ReceivePacket();
                switch (packet.PacketHead.PType)
                {
                    case PacketType.STRING:
                        Console.WriteLine(Convert.ToString(packet.Data));
                        break;
                    case PacketType.BINARY:
                        NetFile f = packetSvr.ParseFile((Byte[])packet.Data);
                        Console.WriteLine("成功接收文件:" + f.FileName);
                        FileStream fs = new FileStream(f.FileName, FileMode.Create);
                        fs.Write(f.Content, 0, f.Content.Length);
                        fs.Flush();
                        fs.Close();
                        break;
                    case PacketType.COMPLEX:
                        Book book = packet.Data as Book;
                        Console.WriteLine(book.Title + "\t" + book.Price);
                        break;
                    default:
                        break;
                }
            } while (true);
        }
    }
}

Java Socket传输对象(序列化)

1.首先需要一个普通的对象类,由于需要序列化这个对象以便在网络上传输,所以实现java.io.Serializable接口就是必不可少的了...
  • SHEN525758203
  • SHEN525758203
  • 2014年08月08日 13:58
  • 2461

利用socket实现简单的文件传输小程序

1. 前言最近老板突然说, 需要在原先的相机系统上面添加一个文件传输的模块, 不让用现成的软件如filezilla, 没办法只能自己手写一个2. 实现效果3. 基本思想 本质上, 文件传输就是从一个地...
  • zhyh1435589631
  • zhyh1435589631
  • 2016年08月11日 12:08
  • 2616

Windows用socket实现文件传输

这里只写客户端代码。编译前请加上libws2_32.a链接库,不然会导致链接失败。 客户端: #include #include #pragma comment(lib,"ws2_32.lib")...
  • e_one
  • e_one
  • 2016年05月14日 17:04
  • 14486

Java面向对象 网络编程 上

 黑马程序员  Java面向对象 网络编程 上
  • u014756827
  • u014756827
  • 2014年05月31日 00:24
  • 291

Android使用Serializable实现序列化传输对象

最近在做一个基于Socket通信项目,在实现客户端与服务器进行对象传输时使用到了Serializable接口对传输对象进行序列化,下面将和大家分享一下我的开发实例,欢迎各位交流探讨,不足之处希望各位多...
  • u010198148
  • u010198148
  • 2015年04月26日 08:57
  • 1029

Netty之传输POJO(使用Java自带的序列化方式)

1、使用Netty传输POJO对象,重点在于对象的序列化。序列化的对象通过TCP进行网络传输,结合Netty提供的对象编解码器,可以做到远程传输对象。首先Java需要序列化的对象,需要实现java.i...
  • zbw18297786698
  • zbw18297786698
  • 2016年12月15日 17:02
  • 1630

socket编程之obj压缩加密传输

由于需要序列化这个对象以便在网络上传输,所以POJO必须要实现java.io.Serializable接口。使用了ObjectInputStream和ObjectOutputStream来接收和发送s...
  • qq_30690633
  • qq_30690633
  • 2016年04月05日 17:27
  • 2194

.Net使用Newtonsoft.Json.dll(JSON.NET)对象序列化成json、反序列化json示例教程

JSON作为一种轻量级的数据交换格式,简单灵活,被很多系统用来数据交互,作为一名.NET开发人员,JSON.NET无疑是最好的序列化框架,支持XML和JSON序列化,高性能,免费开源,支持LINQ查询...
  • yukgwy60648
  • yukgwy60648
  • 2017年01月08日 09:37
  • 510

Socket编程------TCP文件传输(文档、声音、图片、视频和压缩包等)

本程序是基于TCP稳定传输的文件传输,可以兼容任何类型任何格式的文件传输。 ☆基本思路(客户端) 客户端需要明确服务器的ip地址以及端口,这样才可以去试着建立连接,如果连接失败,会出现异常。 ...
  • x121850182
  • x121850182
  • 2016年05月18日 14:58
  • 1275

Socket编程一实现简易的聊天功能以及文件传输

Socket编程一实现简易的聊天功能以及文件传输 标签: androidsocket通讯协议聊天socket传输文件 2017-02-21 21:26 174人阅读 评论(6) 收藏 举报...
  • csnewdn
  • csnewdn
  • 2017年02月23日 09:02
  • 491
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.Net网络通讯编程[利用Socket实现字串、文件、序列化对象传输]--使用封装的网络服务2[使用IE浏览本页]
举报原因:
原因补充:

(最多只允许输入30个字)