c# 服务端
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
using System.Threading;
using System.IO; namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{ Dictionary<string, Socket> d = new Dictionary<string, Socket>();
public Form1()
{
InitializeComponent();
}
Socket so; private void button1_Click(object sender, EventArgs e)
{
string str = this.textBox1.Text.Trim();
Byte[] buf = System.Text.Encoding.UTF8.GetBytes(str);
//Byte[] buffernew = new Byte[buf.Length + 1];
//buffernew[0] = 0;
//int i = 1;
//foreach (byte a in buf)
//{
// buffernew[i] = a;
// i++;
//}
List<byte> list = new List<byte>();
list.Add(0);
list.AddRange(buf);
byte[] buffernew = list.ToArray();
d[comboBox1.SelectedItem.ToString()].Send(buffernew);
//a.Send(buf);
} private void button2_Click(object sender, EventArgs e)
{
string id = this.ip.Text;
int port = Convert.ToInt32(this.port.Text);
IPAddress ip = IPAddress.Parse(id);
IPEndPoint ports = new IPEndPoint(ip,port);
so = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
so.Bind(ports);
so.Listen(10);
Thread d = new Thread(client);
d.IsBackground = true;
d.Start(so); } public void listin(string msg)
{ this.textBox2.AppendText(msg + "\r\n"); } //public void ceshi()
//{
// while (true)
// {
// Socket ce = so.Accept();
// listin(ce.RemoteEndPoint.ToString()+"连接成功");
// Thread ax = new Thread(client);
// ax.Start(ce); // } //} public void client(object o)
{
Socket s = o as Socket; while (true)
{
Socket a = s.Accept();
d.Add(a.RemoteEndPoint.ToString(), a);
this.comboBox1.Items.Add(a.RemoteEndPoint.ToString());
listin(a.RemoteEndPoint.ToString() + "连接成功");
Thread th = new Thread(recevie);
th.IsBackground = false;
th.Start(a); } } void recevie(object o)
{
Socket a = o as Socket;
while (true)
{
Byte[] buffer = new Byte[1024 * 1024 * 3];
int t = a.Receive(buffer);
if (t == 0)
{
break;
}
string str = Encoding.UTF8.GetString(buffer, 0, t);
listin(a.RemoteEndPoint.ToString() + ":" + str);
}
} private void Form1_Load(object sender, EventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
} private void button3_Click(object sender, EventArgs e)
{
OpenFileDialog open = new OpenFileDialog();//创建对话框
open.InitialDirectory = @"C:\Documents and Settings\All Users\桌面"; //设置对话框路径
open.Title = "对话框1"; //对话框标题
open.Filter = "所有文件|*.*";
open.Multiselect = true; //多选
open.ShowDialog(); //打开对话框
string paths = open.FileName; //读取文件的全路径
if (paths == "") return;
this.textBox3.Text = paths; } private void button4_Click(object sender, EventArgs e)
{
string path = this.textBox3.Text;
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
{
byte[] bytes = new byte[1024 * 1024 * 5];
int r = fs.Read(bytes, 0, bytes.Length);
List<byte> list = new List<byte>();
list.Add(1);
list.AddRange(bytes);
byte[] buffernew = list.ToArray();
d[comboBox1.SelectedItem.ToString()].Send(buffernew,0,r+1,SocketFlags.None);
}
} private void button5_Click(object sender, EventArgs e)
{
byte[] buf = new byte[1];
buf[0] = 2;
List<byte> list = new List<byte>();
list.Add(2);
list.AddRange(buf);
byte[] buffernew = list.ToArray();
d[comboBox1.SelectedItem.ToString()].Send(buffernew);
}
}
}
c# 服务端的更多相关文章
- Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)
本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...
- 关于如何提高Web服务端并发效率的异步编程技术
最近我研究技术的一个重点是java的多线程开发,在我早期学习java的时候,很多书上把java的多线程开发标榜为简单易用,这个简单易用是以C语言作为参照的,不过我也没有使用过C语言开发过多线程,我只知 ...
- Socket聊天程序——服务端
写在前面: 昨天在博客记录自己抽空写的一个Socket聊天程序的初始设计,那是这个程序的整体设计,为了完整性,今天把服务端的设计细化记录一下,首页贴出Socket聊天程序的服务端大体设计图,如下图: ...
- zookeeper源码分析之五服务端(集群leader)处理请求流程
leader的实现类为LeaderZooKeeperServer,它间接继承自标准ZookeeperServer.它规定了请求到达leader时需要经历的路径: PrepRequestProcesso ...
- zookeeper源码分析之四服务端(单机)处理请求流程
上文: zookeeper源码分析之一服务端启动过程 中,我们介绍了zookeeper服务器的启动过程,其中单机是ZookeeperServer启动,集群使用QuorumPeer启动,那么这次我们分析 ...
- zookeeper源码分析之一服务端启动过程
zookeeper简介 zookeeper是为分布式应用提供分布式协作服务的开源软件.它提供了一组简单的原子操作,分布式应用可以基于这些原子操作来实现更高层次的同步服务,配置维护,组管理和命名.zoo ...
- 创建APPID&&部署服务端教程
创建APPID&&部署服务端 一.创建APPID 1.打开https://console.developers.google.com ,左击顶部Project,然后左击创建项目 2.输 ...
- 简析服务端通过GT导入SHP至PG的方法
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 项目中需要在浏览器端直接上传SHP后服务端进行数据的自动入PG ...
- TYPESDK手游聚合SDK服务端设计思路与架构之二:服务端设计
在前一篇文中,我们对一个聚合SDK服务端所需要实现的功能作了简单的分析.通过两个主要场景的功能流程图,我们可以看到,作为多款游戏要适配多个渠道的统一请求转发中心,TYPESDK服务端主要需要实现的功能 ...
- TYPESDK手游聚合SDK服务端设计思路与架构之一:应用场景分析
TYPESDK 服务端设计思路与架构之一:应用场景分析 作为一个渠道SDK统一接入框架,TYPESDK从一开始,所面对的需求场景就是多款游戏,通过一个统一的SDK服务端,能够同时接入几十个甚至几百个各 ...
随机推荐
- snapshot standby database
快照备库接收和归档主库发送来的redo,但是不会应用:切换成physical standby之后会自动开启redo apply.快照standby不可以参加主备切换:在最大保护性模式下,如果只有一个备 ...
- mysql:on duplicate key update与replace into
在往表里面插入数据的时候,经常需要:a.先判断数据是否存在于库里面:b.不存在则插入:c.存在则更新 一.replace into 前提:数据库里面必须有主键或唯一索引,不然replace into ...
- display:inline-block; 到底是个啥玩意?
display:inline; 内联元素,简单来说就是在同一行显示.display:block; 块级元素,简单来说就是就是有换行,会换到第二行.display:inline-block; 就是在同一 ...
- G面经prepare: set difference
给你A{1,2,3,4,4,5}, B{2,4},求A-B={1,3,4,5},很简单. visit 1 只用一个HashMap package TwoSets; import java.util.* ...
- 面向对象 理解 C#复习
面向对象: 是基于万物皆对象这个哲学观点. 所谓的面向对象就是将我们的程序模块化,对象化,把具体事物的特性属性和通过这些属性来实现一些动作的具体方法放到一个类里面 通俗点讲: 一切都是对象 举例: 将 ...
- Where does beauty come from?
One more question, rational beauty should come from a dedicated brain and mind. Should there be more ...
- ZOJ 3645 BiliBili(高斯消元)
Shirai Kuroko is a Senior One student. Almost everyone in Academy City have super powers, and Kuroko ...
- 在EditText前面添加一个搜索的小图片
1,这是EditText中的一个小的属性 代码: android:drawableLeft="@drawable/searchico" 效果图如下:
- 夺命雷公狗---node.js---4net模块(上)
node.js为我们提供了一个net模块,主要是为了提供了一些底层通信的小工具,包含了创建服务器/客户端方法,引入方式也很简单: var net = require('net'); net模块也为我们 ...
- zw版【转发·台湾nvp系列Delphi例程】HALCON CheckDifference
zw版[转发·台湾nvp系列Delphi例程]HALCON CheckDifference unit Unit1;interfaceuses Windows, Messages, SysUtils, ...