C#-Socket(TCP)
//提示,线程里面不要给控件赋值
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)的更多相关文章
- 分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载
一.分布式消息总线以及基于Socket的实现 在前面的分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载一文之中给大家分享和介绍了一个极其简单也非常容易上的基于.N ...
- 分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载
一.分布式消息总线 在很多MIS项目之中都有这样的需求,需要一个及时.高效的的通知机制,即比如当使用者A完成了任务X,就需要立即告知使用者B任务X已经完成,在通常的情况下,开发人中都是在使用者B所使用 ...
- 重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP
[源码下载] 重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP 作者:webabcd 介绍重新想象 Windows 8 Store ...
- 关于socket tcp 断线重连
这个问题困扰过我几次,都没有来得及研究,今天研究一下. 首先写一个最简易的socket tcp程序,连接成功后再关闭服务器然后再用客户端各种操作看是什么情况 测试表明 (1)客户端已经连接,当服务端关 ...
- ActionScript简单实现Socket Tcp应用协议分析器
转自..smark http://www.cnblogs.com/smark/archive/2012/05/15/2501507.html ActionScript简单实现Socket Tcp应用协 ...
- 与众不同 windows phone (30) - Communication(通信)之基于 Socket TCP 开发一个多人聊天室
原文:与众不同 windows phone (30) - Communication(通信)之基于 Socket TCP 开发一个多人聊天室 [索引页][源码下载] 与众不同 windows phon ...
- 基于.NET Socket Tcp的发布-订阅框架
基于.NET Socket Tcp的发布-订阅框架 一.分布式消息总线 在很多MIS项目之中都有这样的需求,需要一个及时.高效的的通知机制,即比如当使用者A完成了任务X,就需要立即告知使用者B任务X已 ...
- 初步探究java中程序退出、GC垃圾回收时,socket tcp连接的行为
初步探究java中程序退出.GC垃圾回收时,socket tcp连接的行为 今天在项目开发中需要用到socket tcp连接相关(作为tcp客户端),在思考中发觉需要理清socket主动.被动关闭时发 ...
- Socket TCP Server一个端口可以有多少个长连接?受到什么影响?linux最大文件句柄数量总结
Socket TCP Server一个端口可以有多少个长连接? 网上答案很多,不知道那个才是正确的 理论上是无限的 16.Linux中,一个端口能够接受tcp链接数量的理论上限是? A.1024 B. ...
- 27.Socket,TCP,UDP,HTTP基本通信原理
Socket,TCP,UDP,HTTP基本通信原理(摘自百度): TCP.UDP,HTTP 底层通信都是通过 socket 套接字实现 网络上不同的计算机,也可以通信,那么就得使用网络套接字(sock ...
随机推荐
- Linux Kernel 0.12 启动简介,调试记录(Ubuntu1804, Bochs, gdb)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- 【HTB系列】靶机Bitlab的渗透测试
出品|MS08067实验室(www.ms08067.com) 本文作者:是大方子(Ms08067实验室核心成员) 0x00 本文目录 反思与总结 基本信息 渗透测试过程 补充 0x01 反思与总结 c ...
- 【海思】Hi3516A 运行sample_venc的demo内核奔溃(DDR问题)
作者:李春港 出处:https://www.cnblogs.com/lcgbk/p/14514297.html 目录 一.前言 二.使用memtester对ddr进行压力测试 三.修改uboot的DD ...
- LNMP配置——Nginx配置 —— 配置静态文件不记录日志并添加过期时间
一.配置 #vi /usr/local/nginx/conf/vhost/test.com.conf 写入; server { listen 80; server_name test.com test ...
- 通过unity Distribution Portal发布华为渠道的游戏
背景说明 前面几个帖子详细介绍了: Unity Editor安装和Apk打包 手把手教您快速运行Unity提供的华为游戏demo 使用unity完成华为游戏的初始化和华为帐号登录 快速开发Unity游 ...
- 制作API离线chm帮助文件教程
当我们开发好一个通信库的时候,我们希望给这个通信库配备一个帮助文档,最好的方式,就是有一个离线的chm版本的API文档,这样别人在使用的时候,就可以清楚看到命名空间.类的结构,同时也能看到每个方法和属 ...
- 分子量(JAVA语言)
package 第三章习题; /* * 给出一种物质的分子式(不带括号)求分子量. * 本题分子只包含4种原子,分别为C,H,O,N * 分子量为分别为12.01,1.008,16.00,14 ...
- 2019看雪CTF 晋级赛Q2第四题wp
上次参加2019看雪CTF 晋级赛Q2卡在了这道题上,虽然逆出算法,但是方程不会解,哈哈哈哈,果然数学知识很重要呀,现在记录一下. 首先根据关键信息,根据错误提示字符串定位到这里: 1 int __t ...
- 手把手教你如何使用Charles抓包
一.为什么使用charles 前几天因为需要通过抓包定位问题,打开了尘封已久的fiddler,结果打开软件后什么也干不了,别说手机抓包了,打开软件什么请求也抓不到. 很多时候都是如此,如果一个方案不行 ...
- vue全局错误捕获
1.errorHandler Vue全局配置 errorHandler可以进行全局错误收集,捕获全局错误抛出,避免前端页面挂掉 export default function errorHandl ...