下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第C#网络编程之Socket编程byte[]buffer=newbyte[1]{2};
dicSocket[cmb_Socket.SelectedItem.ToString()].Send(buffer);
///summary
///停止监听
////summary
///paramname="sender"/param
///paramname="e"/param
privatevoidbtn_StopListen_Click(objectsender,EventArgse)
socketWatch.Close();
socketSend.Close();
//终止线程
AcceptSocketThread.Abort();
threadReceive.Abort();
}
客户端界面
代码实现如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Threading.Tasks;
usingSystem.Windows.Forms;
usingSystem.Net.Sockets;
usingSystem.Net;
usingSystem.Threading;
usingSystem.IO;
namespaceSocketClient
publicpartialclassFrmClient:Form
publicFrmClient()
InitializeComponent();
//定义回调
privatedelegatevoidSetTextCallBack(stringstrValue);
//声明
privateSetTextCallBacksetCallBack;
//定义接收服务端发送消息的回调
privatedelegatevoidReceiveMsgCallBack(stringstrMsg);
//声明
privateReceiveMsgCallBackreceiveCallBack;
//创建连接的Socket
SocketsocketSend;
//创建接收客户端发送消息的线程
ThreadthreadReceive;
///summary
///连接
////summary
///paramname="sender"/param
///paramname="e"/param
privatevoidbtn_Connect_Click(objectsender,EventArgse)
socketSend=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
IPAddressip=IPAddress.Parse(this.txt_IP.Text.Trim());
socketSend.Connect(ip,Convert.ToInt32(this.txt_Port.Text.Trim()));
//实例化回调
setCallBack=newSetTextCallBack(SetValue);
receiveCallBack=newReceiveMsgCallBack(SetValue);
this.txt_Log.Invoke(setCallBack,"连接成功");
//开启一个新的线程不停的接收服务器发送消息的线程
threadReceive=newThread(newThreadStart(Receive));
//设置为后台线程
threadReceive.IsBackground=true;
threadReceive.Start();
catch(Exceptionex)
MessageBox.Show("连接服务端出错:"+ex.ToString());
///summary
///接口服务器发送的消息
////summary
privatevoidReceive()
while(true)
byte[]buffer=newbyte[2048];
//实际接收到的字节数
intr=socketSend.Receive(buffer);
if(r==0)
break;
else
//判断发送的数据的类型
if(buffer[0]==0)//表示发送的是文字消息
stringstr=Encoding.Default.GetString(buffer,1,r-1);
this.txt_Log.Invoke(receiveCallBack,"接收远程服务器:"+socketSend.RemoteEndPoint+"发送的消息:"+str);
//表示发送的是文件
if(buffer[0]==1)
SaveFileDialogsfd=newSaveFileDialog();
sfd.InitialDirectory=@"";
sfd.Title="请选择要保存的文件";
sfd.Filter="所有文件|*.*";
sfd.ShowDialog(this);
stringstrPath=sfd.FileName;
using(FileStream
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业运输环节安全管控工程方案
- 科创板企业流程改造阶段管理方案
- 肺癌的靶向药物耐药管理
- 建筑装饰样板引路方案
- 建筑幕墙成品保护方案
- 2026年初一英语开学考试试题及答案
- 机电设备单机调试技术方案
- 环保药剂投加方案
- 公司设备联调联试方案
- 钢结构吊装指挥方案
- 宜宾市自然资源和规划局竞争性比选工作人员的考试参考试题及答案解析
- 《道路运输企业主要负责人和安全生产管理人员安全考核机动车维修企业》专业部分题库(附答案)
- 20.2电生磁教案(表格式)2025-2026学年初中物理人教版九年级全一册
- 霍桑红字介绍
- TGXAS-抗肿瘤药物临床试验护理工作规范编制说明
- 美团推广合同范本
- 网络金融部业务知识考试题库
- 税务领导选拔面试题目及答案
- 内分泌危象识别与应急处理
- 机关人员公务出差审批单
- 2025年(重点)水利安全员B证近年考试真题题库及答案
评论
0/150
提交评论