C#通过Socket在网络间发送和接收图片的演示源码

将内容过程中常用的内容段备份一次,如下资料是关于C#通过Socket在网络间发送和接收图片的演示的内容,希望能对码农们有帮助。

using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.IO;

namespace ConsoleApplication1
{
Class Program
{
static void Main (String[] args)
{
Socket sListen = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

        IPAddress IP = IPAddress.Parse ("127.0.0.1");
        IPEndPoint IPE = new IPEndPoint (IP, 4321);

        sListen.Bind (IPE);

        Console.WriteLine ("Service is listening ...");
        sListen.Listen (2);

        while (true)
        {
            Socket clientSocket;
            try
            {
                clientSocket = sListen.Accept ();
            }
            catch
            {
                throw;
            }

            byte[] buffer = ReadImageFile ("1.jpg");
            clientSocket.Send (buffer, buffer.Length, SocketFlags.None);
            Console.WriteLine ("Send success!");
        }
    }

    private static byte[] ReadImageFile (String img)
    {
        FileInfo fileinfo = new FileInfo (img);
        byte[] buf = new byte[fileInfo.Length];
        FileStream fs = new FileStream (img, FileMode.Open, FileAccess.Read);
        fs.Read (buf, 0, buf.Length);
        fs.Close ();
        GC.ReRegisterForFinalize (fileinfo);
        GC.ReRegisterForFinalize (fs);
        return buf;
    }

}

}

客户端接收和保存图片的代码

using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.IO;

namespace ConsoleApplication2
{
Class Program
{
static void Main (String[] args)
{
Socket S = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

        IPAddress IP = IPAddress.Parse ("127.0.0.1");
        IPEndPoint IPE = new IPEndPoint (IP, 4321);

        Console.WriteLine ("started connection service ....");
        s.Connect (IPE);

        byte[] buffer = new byte[1000000];
        s.Receive (buffer, buffer.Length, SocketFlags.None);
        Console.WriteLine ("Receive success");

        FileStream fs =  File.Create ("1.jpg");
        fs.Write (buffer, 0, buffer.Length);
        fs.Close ();

        Console.ReadKey ();
    }
}

}

原文地址:https://blog.51cto.com/14135053/2393417

时间: 2024-10-08 03:02:27

C#通过Socket在网络间发送和接收图片的演示源码的相关文章

udp网络程序-发送、接收数据

1. udp网络程序-发送数据 创建一个基于udp的网络程序流程很简单,具体步骤如下: 创建客户端套接字 发送/接收数据 关闭套接字 代码如下: #coding=utf-8 from socket import * # 1. 创建udp套接字 udp_socket = socket(AF_INET, SOCK_DGRAM) # 2. 准备接收方的地址 # '192.168.1.103'表示目的ip地址 # 8080表示目的端口 dest_addr = ('192.168.1.103', 8080

C#Socket文件传输(发送与接收代码)

这里是发送的代码: SendVarData是转码后发送函数 1 /// <summary> 2 /// 发送文件 3 /// </summary> 4 /// <param name="userName"></param> 5 private void SendFileToClient(string userName) 6 { 7 User targetUser = userListDict[userName]; 8 String tar

iOS炫酷动画图案、多种选择器、网络测速、滑动卡片效果等源码

iOS精选源码 对网络进行测速 自实现大标题,配合原生骨架屏demo 简单方便的pickerVIew记录数据 LZPickerView 科技风绘制组件,简单快速"画"出炫酷图案 ResponderChain+Strategy+MVVM实现一个优雅的TableView Card Slider EWAddressPicker.选择中国省市区的自定制地址选择器 EWDatePicker 日期选择器 EWToast.简易Toast提示框 FMDB改进方案YIIFMDB:直接将Model存入数据

kafka 发送数据,如何确定partition源码解释

每一个record 都有一个key 其作用在于 1 作为一个record的元数据 2 用于分区,以便确定record进入到哪个,那么具体代码是如何实现的呢?我们查看下源码 partition 如果所有的message是同一个key,将会被放入同一个partition kafka发送一个消息的流程 1 判断有没有拦截器,如果有拦截器就会执行拦截器的send 2 拿到cluster 3 对key和value序列化 4 计算此消息发送到哪个partition partition计算过程具体如下: 第二

Socket通信案例--实现发送与接收数据

客户端:import socket client = socket.socket()client.connect(("localhost",6969))while True: msg = input("我要发数据>>:").strip() print("开始发送数据: "+msg) client.send(msg.encode("UTF-8"))client.close()运行截图:   服务器端:import s

unix网络编程卷1:套接字联网 源码编译

QUICK AND DIRTY Execute the following from the src/ directory: 一: ./configure # try to figure out all 结果是: ........ checking for struct addrinfo... yes checking for struct if_nameindex... yes checking for struct sockaddr_dl... no checking for struct

2016广东工业大学新生杯决赛网络同步赛暨全国新生邀请赛 题解&amp;源码

Problem A: pigofzhou的巧克力棒 Description 众所周知,pigofzhou有许多妹子.有一天,pigofzhou得到了一根巧克力棒,他想把这根巧克力棒分给他的妹子们.具体地,这根巧克力棒长为 n,他想将这根巧克力棒折成 n 段长为 1 的巧克力棒,然后分给妹子们. 但是他妹子之一中的 15zhazhahe 有强迫症.若它每次将一根长为 k 的巧克力棒折成两段长为 a 和 b 的巧克力棒,此时若 a=b,则15zhazhahe会得到一点高兴值. pigofzhou想知

iOS Socket 整理以及CocoaAsyncSocket、SRWebSocket源码解析(一)

写在准备动手的时候: Socket通讯在iOS中也是很常见,自己最近也一直在学习Telegram这个开源项目,Telegram就是在Socket的基础上做的即时通讯,这个相信了解这个开源项目的也都知道,希望自己能慢慢的了解一下它的这个MtProtoKit开源协议,即时通讯这一块的东西我以前写过一篇<iOS 即时通讯 + 仿微信聊天框架 + 源码>,从点击量看的出来真的这一块的东西我们的需求量还是很大,<iOS 即时通讯 + 仿微信聊天框架 + 源码>这篇文章由于自己去年也是能力有限

Docker源码分析(七):Docker Container网络 (上)

1.前言(什么是Docker Container) 如今,Docker技术大行其道,大家在尝试以及玩转Docker的同时,肯定离不开一个概念,那就是“容器”或者“Docker Container”.那么我们首先从实现的角度来看看“容器”或者“Docker Container”到底为何物. 逐渐熟悉Docker之后,大家肯定会深深得感受到:应用程序在Docker Container内部的部署与运行非常便捷,只要有Dockerfile,应用一键式的部署运行绝对不是天方夜谭: Docker Conta