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# 服务端的更多相关文章

  1. Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)

    本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...

  2. 关于如何提高Web服务端并发效率的异步编程技术

    最近我研究技术的一个重点是java的多线程开发,在我早期学习java的时候,很多书上把java的多线程开发标榜为简单易用,这个简单易用是以C语言作为参照的,不过我也没有使用过C语言开发过多线程,我只知 ...

  3. Socket聊天程序——服务端

    写在前面: 昨天在博客记录自己抽空写的一个Socket聊天程序的初始设计,那是这个程序的整体设计,为了完整性,今天把服务端的设计细化记录一下,首页贴出Socket聊天程序的服务端大体设计图,如下图: ...

  4. zookeeper源码分析之五服务端(集群leader)处理请求流程

    leader的实现类为LeaderZooKeeperServer,它间接继承自标准ZookeeperServer.它规定了请求到达leader时需要经历的路径: PrepRequestProcesso ...

  5. zookeeper源码分析之四服务端(单机)处理请求流程

    上文: zookeeper源码分析之一服务端启动过程 中,我们介绍了zookeeper服务器的启动过程,其中单机是ZookeeperServer启动,集群使用QuorumPeer启动,那么这次我们分析 ...

  6. zookeeper源码分析之一服务端启动过程

    zookeeper简介 zookeeper是为分布式应用提供分布式协作服务的开源软件.它提供了一组简单的原子操作,分布式应用可以基于这些原子操作来实现更高层次的同步服务,配置维护,组管理和命名.zoo ...

  7. 创建APPID&&部署服务端教程

    创建APPID&&部署服务端 一.创建APPID 1.打开https://console.developers.google.com ,左击顶部Project,然后左击创建项目 2.输 ...

  8. 简析服务端通过GT导入SHP至PG的方法

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 项目中需要在浏览器端直接上传SHP后服务端进行数据的自动入PG ...

  9. TYPESDK手游聚合SDK服务端设计思路与架构之二:服务端设计

    在前一篇文中,我们对一个聚合SDK服务端所需要实现的功能作了简单的分析.通过两个主要场景的功能流程图,我们可以看到,作为多款游戏要适配多个渠道的统一请求转发中心,TYPESDK服务端主要需要实现的功能 ...

  10. TYPESDK手游聚合SDK服务端设计思路与架构之一:应用场景分析

    TYPESDK 服务端设计思路与架构之一:应用场景分析 作为一个渠道SDK统一接入框架,TYPESDK从一开始,所面对的需求场景就是多款游戏,通过一个统一的SDK服务端,能够同时接入几十个甚至几百个各 ...

随机推荐

  1. TCP 状态图网摘

    from unkonwn 1.CLOSED:起始点,在超时或者连接关闭时候进入此状态. 2.LISTEN:svr端在等待连接过来时候的状态,svr端为此要调用socket, bind,listen函数 ...

  2. Java基础之在窗口中绘图——使用模型/视图体系结构在视图中绘图(Sketcher 1 drawing a 3D rectangle)

    控制台程序. 在模型中表示数据视图的类用来显示草图并处理用户的交互操作,所以这种类把显示方法和草图控制器合并在一起.不专用于某个视图的通用GUI创建和操作在SketcherFrame类中处理. 模型对 ...

  3. 学习jsp(3)

    HttpServletRequest和HttpServletResponse: response.setContentType("text/html;charset=UTF-8") ...

  4. 资源Createwindow,对应标识符,绑定窗口

    问? 定义一个CEdit cedit1:怎么和IDC_EDIT1 关联,可以在CEdit.Create()里传进去或者在DoDataExchange()里面绑定,是不是一定要先弄出个IDC_EDIT1 ...

  5. 转:python webdriver API 之浏览器的操作

    1.1.浏览器最大化在统一的浏览器大小下运行用例,可以比较容易的跟一些基于图像比对的工具进行结合,提升测试的灵活性及普遍适用性.比如可以跟 sikuli 结合,使用 sikuli 操作 flash.# ...

  6. Java基础(9):Java生成随机数一定范围内的数的一个典型例子

    题目:编写一个JAVA程序,创建指定长度的 int 型数组,并生成 100 以内随机数为数组中的每个元素赋值,然后输出数组 note: 通过 (int)(Math.random() * 100) 生成 ...

  7. Android -- FragmentTabHost实现微信底部切换

    1,在商城类的项目中我们开始一个项目的时候经常出现这样的需求,如下图所示: 下面使用户可以切换的模块,上面是对应的模块的详细内容,实现这个效果有很多方式,可以使用radiobutton+fragmen ...

  8. java父类转子类的一个方法

    一般子类可以转父类.但父类转子类就会报cast error. 使用jsonobject 思想:先把父类转jsonstring 再把jsonstring转子类.剩余的子类值可以设定进去. import ...

  9. Oracle中的MD5加密

    一.技术点 1. DBMS_OBFUSCATION_TOOLKIT.MD5 DBMS_OBFUSCATION_TOOLKIT.MD5是MD5编码的数据包函数,但偶在使用select DBMS_OBFU ...

  10. yii2获取登陆的用户名

    yii2获取登陆的用户名: yii::$app->user->identity->username; 判断用户名是否登陆 if(Yii::$app->user->isGu ...