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服务端,能够同时接入几十个甚至几百个各 ...
随机推荐
- 集群因子(Clustering Factor)
clustering factor是CBO使用的统计信息,用来衡量一个表中的列是否是规则排序存放的. 在通过索引访问表的时候,被用来作为代价评估的指示器.扫描索引的时候,clustering fact ...
- Java基础之序列化对象——反序列化对象(DeserializeObjects)
控制台程序,使用如下代码能读入包含Junk对象的文件: import java.io.*; import java.nio.file.*; class DeserializeObjects { pub ...
- Java基础之访问文件与目录——测试文件或目录的路径(TryPath)
控制台程序,测试文件或目录的路径. import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.FileSy ...
- Lintcode: Partition Array
Given an array "nums" of integers and an int "k", Partition the array (i.e move ...
- 我与 美国作家 21天精通C++ 作者 Rao的对话:
这就是动力呀!
- linux环境变量与本地变量
两者不同的是. 环境变量可以在shell的子进程中使用, 而本地变量不同. 每当连接上服务器时,服务器就会通过帐号密码运行一个SHELL,我们所做的工作都在这个SHELL上,特殊方法除外(如,守护进程 ...
- 变形--原点 transform-origin
任何一个元素都有一个中心点,默认情况之下,其中心点是居于元素X轴和Y轴的50%处.如下图所示: 在没有重置transform-origin改变元素原点位置的情况下,CSS变形进行的旋转.位移.缩放,扭 ...
- hdu4918 Query on the subtree
树分治,设当前树的分治中心为x,其子树分治中心为y,则设father[y]=x,分治下去则可以得到一颗重心树,而且树的深度是logn. 询问操作(x,d),只需要查询重心树上x到重心树根节点上的节点的 ...
- ECharts切换主题
初始化接口,返回ECharts实例,其中dom为图表所在节点,theme为可选的主题,内置主题('macarons', 'infographic')直接传入名称,自定义扩展主题可传入主题对象.如: v ...
- 缓存方案之Redis
Redis简介 Redis是Remote Dictionary Server(Redis) 的缩写,或许光听名字你就能猜出它大概是做什么的.不错,它是一个由Salvatore Sanfilippo ...