//提示,线程里面不要给控件赋值

 LinkSocket.Send(result, length, 0);

自己挂起
private void button1_Click(object sender, EventArgs e)
{
bool ok = guaqi(IPAddress.Parse(rip.Text) ,int.Parse (rpont .Text ));
if (ok)
{
richTextBox1.Text = "挂起成功!";
jiantingkehuduan();//监听
}
else richTextBox1.Text = "挂起失败";
} 连接别人
private void button2_Click(object sender, EventArgs e)
{
bool ok = Link (IPAddress.Parse(rip.Text), int.Parse(rpont.Text));
if (ok)
{
richTextBox1.Text = "连接成功!";
clientSocket.Send(Encoding.UTF8.GetBytes("aaaaa"));
}
else richTextBox1.Text = "连接失败";
} //CS************************************************
//定义
public int Pont;//端口
public IPAddress Ip;//ip
public Socket MySocket;//定义一个套接字 //挂起socket
public bool guaqi(IPAddress ip, int pont)
{
try //挂起socket,可以根据这个地方try一下判断启动服务器是否成功
{
Pont = pont;
Ip = ip;
MySocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
MySocket.Bind(new IPEndPoint(Ip, Pont));
MySocket.Listen(30);//最多监听30个
return true;//挂起成功
}
catch
{
return false;//挂起失败
}
} //监听客户端
public void jiantingkehuduan()
{
Thread myThread = new Thread(listen);
myThread.IsBackground = true;
myThread.Start();
}
//监听函数
public void listen()
{
while (true)
{
Socket now = MySocket.Accept();//监听到的这个赋值在p1ser..上
//每接收到一个连接就给他开一个单独的send便于交流
Thread tt = new Thread(send);//send是接收并发送消息
tt.IsBackground = true;
tt.Start(now);//建立一个和p1一起的发送接受线程
}
} //send//接收和发送消息
public void send(object clientSocket)
{
Socket nowsocket = (Socket)clientSocket;
byte[] result = new byte[1024];
while (true)//一直和p1保持联系
{
try //可以try一下,catch的时候就是对方下线或者故障了
{ //接收******************
int len = nowsocket.Receive(result);//接收消息,并且存在result里
string tmp = Encoding.UTF8.GetString(result, 0, len);
//可以用if(tmp=="")来判断干什么
//发送**************
//nowsocket.Send(Encoding.UTF8.GetBytes("aaaaa"));
}
catch
{
return; //连接断开
}
}
} //连接
Socket clientSocket;
public bool Link(IPAddress ip, int pont)
{
clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
clientSocket.Connect(new IPEndPoint(ip, pont));
//int len = clientSocket.Receive(result);
//string tmp = Encoding.UTF8.GetString(result, 0, len);
return true;
}
catch
{
return false;
}
}

C#-Socket(TCP)的更多相关文章

  1. 分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载

    一.分布式消息总线以及基于Socket的实现 在前面的分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载一文之中给大家分享和介绍了一个极其简单也非常容易上的基于.N ...

  2. 分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载

    一.分布式消息总线 在很多MIS项目之中都有这样的需求,需要一个及时.高效的的通知机制,即比如当使用者A完成了任务X,就需要立即告知使用者B任务X已经完成,在通常的情况下,开发人中都是在使用者B所使用 ...

  3. 重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP

    [源码下载] 重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP 作者:webabcd 介绍重新想象 Windows 8 Store ...

  4. 关于socket tcp 断线重连

    这个问题困扰过我几次,都没有来得及研究,今天研究一下. 首先写一个最简易的socket tcp程序,连接成功后再关闭服务器然后再用客户端各种操作看是什么情况 测试表明 (1)客户端已经连接,当服务端关 ...

  5. ActionScript简单实现Socket Tcp应用协议分析器

    转自..smark http://www.cnblogs.com/smark/archive/2012/05/15/2501507.html ActionScript简单实现Socket Tcp应用协 ...

  6. 与众不同 windows phone (30) - Communication(通信)之基于 Socket TCP 开发一个多人聊天室

    原文:与众不同 windows phone (30) - Communication(通信)之基于 Socket TCP 开发一个多人聊天室 [索引页][源码下载] 与众不同 windows phon ...

  7. 基于.NET Socket Tcp的发布-订阅框架

    基于.NET Socket Tcp的发布-订阅框架 一.分布式消息总线 在很多MIS项目之中都有这样的需求,需要一个及时.高效的的通知机制,即比如当使用者A完成了任务X,就需要立即告知使用者B任务X已 ...

  8. 初步探究java中程序退出、GC垃圾回收时,socket tcp连接的行为

    初步探究java中程序退出.GC垃圾回收时,socket tcp连接的行为 今天在项目开发中需要用到socket tcp连接相关(作为tcp客户端),在思考中发觉需要理清socket主动.被动关闭时发 ...

  9. Socket TCP Server一个端口可以有多少个长连接?受到什么影响?linux最大文件句柄数量总结

    Socket TCP Server一个端口可以有多少个长连接? 网上答案很多,不知道那个才是正确的 理论上是无限的 16.Linux中,一个端口能够接受tcp链接数量的理论上限是? A.1024 B. ...

  10. 27.Socket,TCP,UDP,HTTP基本通信原理

    Socket,TCP,UDP,HTTP基本通信原理(摘自百度): TCP.UDP,HTTP 底层通信都是通过 socket 套接字实现 网络上不同的计算机,也可以通信,那么就得使用网络套接字(sock ...

随机推荐

  1. Java 常见对象 04

    常见对象·Arrays 类和 包装类 数组高级冒泡排序原理图解 * A:画图演示 * 需求: 数组元素:{24, 69, 80, 57, 13} 请对数组元素进行排序 * 冒泡排序: 相邻元素两两比较 ...

  2. 前端学习 node 快速入门 系列 —— 初步认识 node

    其他章节请看: 前端学习 node 快速入门 系列 初步认识 node node 是什么 node(或者称node.js)是 javaScript(以下简称js) 运行时的一个环境.不是一门语言. 以 ...

  3. SpringBoot启动流程原理解析(二)

    在上一章我们分析了SpingBoot启动流程中实例化SpingApplication的过程. return new SpringApplication(primarySources).run(args ...

  4. windows下MySQL如何完全卸载并安装行的版本

    卸载本地mysql之前,请务必要先将需要的数据库备份 停止mysql 服务 windows键-->搜索服务 找到mysql 服务,并停止他 卸载mysql server 在控制面板--程序 找到 ...

  5. 冗余网络构建方案对比:VRRP协议、多网卡绑定及WN202冗余链路网卡

    在组建网络时为网络设计冗余方案已经成为提高网络可用性必不可少的一环,伴随着网络技术的发展实现网络冗余的技术方案也是层出不穷,例如应用于服务器端的HA.LB,应用于存储的SAN.DAS.NAS等.本文重 ...

  6. java 动态规划解决上楼梯问题

    问题描述: 你正在爬楼梯. 它需要n步才能达到顶峰. 每次你可以爬1或2步. 您可以通过多少不同的方式登顶? 注意:给定n将是一个正整数. Example 1: Input: 2 Output: 2 ...

  7. ResNet的个人总结

    ResNet可以说是我认真读过的第一篇paper,据师兄说读起来比较简单,没有复杂的数学公式,不过作为经典的网络结构还是有很多细节值得深究的.因为平时不太读英文文献,所以其实读的时候也有很多地方不是很 ...

  8. D8016 “/ZI”和“/Gy-”命令行选项不兼容

    老版本vs项目升级到vs2017后遇到编译报错: /ZI选项在: /Gy- 选项在: 修改'/ZI'选项为'无' 或者 '/Gy-' 修改为'/Gy'

  9. kong更改日志格式

    基于业务的需求,需要对网关层的日志进行适当定制,以满足使用kibana的制图. 对于kong的日志格式更改,可查看到的资料都过于繁琐,特此记录. 修改kong的日志格式 # ctl edit depl ...

  10. 《基于Kubernetes舵手集群的设计与实现》

    前言 <基于Kubernetes舵手集群的设计与实现>是我的毕业设计项目.本系统采用Kubernetes容器编排.基于Jenkins\Gitlab的CICD技术.EFK日志收集.Prome ...