Socket基本编程

服务端:

using System.Net;

using System.Net.Sockets;

using System.Text;

using System.Threading;

Thread mythread ;

Socket socket;

// 清理所有正在使用的资源。

protected override void Dispose( bool disposing )

{

try

  {   

   socket.Close();//释放资源

   mythread.Abort ( ) ;//中止线程

  }

  catch{ }

if( disposing )

{

if (components != null)

{

components.Dispose();

}

}

base.Dispose( disposing );

}

public static IPAddress GetServerIP()

{

IPHostEntry ieh=Dns.GetHostByName(Dns.GetHostName());

return ieh.AddressList[0];

}

private void BeginListen()

{

IPAddress ServerIp=GetServerIP();

IPEndPoint iep=new IPEndPoint(ServerIp,8000);

socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

byte[] byteMessage=new byte[100];

this.label1.Text=iep.ToString();

socket.Bind(iep);

// do

while(true)

{

try

{

socket.Listen(5);

Socket newSocket=socket.Accept();

newSocket.Receive(byteMessage);

string sTime = DateTime.Now.ToShortTimeString ( ) ;

string msg=sTime+":"+"Message from:";

msg+=newSocket.RemoteEndPoint.ToString()+Encoding.Default.GetString(byteMessage);

this.listBox1.Items.Add(msg);

}

catch(SocketException ex)

{

this.label1.Text+=ex.ToString();

}

}

// while(byteMessage!=null);

}

//开始监听

private void button1_Click(object sender, System.EventArgs e)

{

try

{

mythread = new Thread(new ThreadStart(BeginListen));

mythread.Start();

}

catch(System.Exception er)

{

MessageBox.Show(er.Message,"完成",MessageBoxButtons.OK,MessageBoxIcon.Stop);

}

}

客户端:

using System.Net;

using System.Net.Sockets;

using System.Text;

private void button1_Click(object sender, System.EventArgs e)

{

BeginSend();

}

private void BeginSend()

{

string ip=this.txtip.Text;

string port=this.txtport.Text;

IPAddress serverIp=IPAddress.Parse(ip);

int serverPort=Convert.ToInt32(port);

IPEndPoint iep=new IPEndPoint(serverIp,serverPort);

byte[] byteMessage;

// do

// {

Socket socket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

socket.Connect(iep);

byteMessage=Encoding.ASCII.GetBytes(textBox1.Text);

socket.Send(byteMessage);

socket.Shutdown(SocketShutdown.Both);

socket.Close();

// }

// while(byteMessage!=null);

}

基于TCP协议的发送和接收端

TCP协议的接收端

using System.Net.Sockets ; //使用到TcpListen类

using System.Threading ; //使用到线程

using System.IO ; //使用到StreamReader类

int port = 8000; //定义侦听端口号

private Thread thThreadRead; //创建线程,用以侦听端口号,接收信息

private TcpListener tlTcpListen; //侦听端口号

private bool blistener = true; //设定标示位,判断侦听状态

private NetworkStream nsStream; //创建接收的基本数据流

private StreamReader srRead;

private System.Windows.Forms.StatusBar statusBar1;

private System.Windows.Forms.Button button1;

private System.Windows.Forms.ListBox listBox1; //从网络基础数据流中读取数据

private TcpClient tcClient ;

private void Listen ( )

{

try

{

tlTcpListen = new TcpListener ( port ) ; //以8000端口号来初始化TcpListener实例

tlTcpListen.Start ( ) ; //开始监听

statusBar1.Text = "正在监听..." ;

tcClient = tlTcpListen.AcceptTcpClient ( ) ; //通过TCP连接请求

nsStream = tcClient.GetStream ( ) ; //获取用以发送、接收数据的网络基础数据流

srRead=new StreamReader(nsStream);//以得到的网络基础数据流来初始化StreamReader实例

statusBar1.Text = "已经连接!";

转载于:https://www.cnblogs.com/lovenets/articles/422076.html

DotNET(C#) Socket基本编程 (1)相关推荐

  1. Linux C++/Java/Web/OC Socket网络编程

    一,Linux C++ Socket网络编程 1.什么是TCP/IP.UDP? TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制 ...

  2. python运维开发之socket网络编程01

    python运维开发之socket网络编程01说明:本文来自来自北京老男孩linux运维实战培训中心-运维开发课程免费视频内容,本文内容为系列内容,更多分享信息见:http://oldboy.blog ...

  3. Socket网络编程(2)--服务端实现

    中秋了,首先祝大家中秋快乐,闲着无事在家整一个socket的聊天程序,有点仿QQ界面,就是瞎折腾,不知道最后是不是能将所有功能实现. 如果你对socket不了解,请看这篇文章:http://www.c ...

  4. Linux Kernel TCP/IP Stack — Socket Layer — TCP/UDP Socket 网络编程

    目录 文章目录 目录 TCP/UDP Socket 逻辑架构 创建 Socket 绑定 Socket 请求建立 Socket 连接 监听 Socket 接受请求 关闭连接 数据的发送和接收 send ...

  5. Socket网络编程笔记

    网络.计算机网络的构成是什么? 网络: 在计算机领域中,网络是信息传输.接收.共享的虚拟平台,通过它可以把各个点.面(组织之间).体(例如公共app)的信息联系到一起,从而实现这些资源的共享. 局域网 ...

  6. 【Socket网络编程】14. perror()、errno 的使用

    经常会在socket网络编程时看到errno和perror(),他们是什么呢? 函数定义: void perror(const char *s); perror ("open_port&qu ...

  7. socket网络编程——套接字地址结构

    声明:此博客是本人根据老师课件总结的,如有抄袭行为,本人会即刻删除. 1.主机字节序列和网络字节序列 主机字节序列分为大端字节序和小端字节序,不同的主机采用的字节序列可能不同.大端字节序是指一个整数的 ...

  8. 【网络编程】之四、socket网络编程例解

    前面说了那么多,现在我们给出4个代码+详解,基于win32平台的socket编程.使用TCP 和 UDP 两种协议. OK,先来看一下TCP服务器和客户端: [cpp] view plaincopy ...

  9. C#中Socket通信编程的同步实现

    目录(?)[+] Socket编程基础 什么是Socket编程的同步实现 如何实现Socket同步通信 服务端 基本流程 代码示例 客户端 基本流程 代码示例 总结 本文通过分析和总结C#中Socke ...

最新文章

  1. html文件修改后缀为aspx之后在ie6中格式显示不正确问题的解决办法
  2. 一致性hash算法_分布式寻址算法
  3. python 水位_一种适用于利用图像识别水位的水位尺的制作方法
  4. 语音信号短时域分析之预处理(三)
  5. http 和 https_详解http和https的区别
  6. 使用Data Profile进行数据剖析
  7. NFS运维二班--梁瑞
  8. cloud foundry_Spring 3.1,Cloud Foundry和本地开发
  9. android dialog 字体,android – 为AlertDialog的MultiSelectItems设置自定义字体(字体)
  10. Java线程--扩展
  11. 孙鑫-MFC笔记二--MFC框架剖析
  12. Java的日期类说明Calendar、Data、日期转化格式化以及注意事项
  13. 微信小程序常见面试题及答案
  14. Deep-Z:使用深度学习对荧光显微镜图像进行三维虚拟重建
  15. 私厨菜谱app的设计与实现(二)
  16. 贴吧老矣,尚能饭否?
  17. vue开发企业微信应用-开发及调试方式
  18. linux 相关快捷键
  19. java计算机毕业设计网络招聘系统源码+系统+数据库+lw文档+mybatis+运行部署
  20. Vue获取当前路由地址以及当前页面的地址

热门文章

  1. 织梦 html 优酷,让织梦CMS的后台编辑器支持优酷视频
  2. 南京大学计算机考研机试,2018南大CS考研机试答案
  3. 32 vs 开发wince_十年经验的大神谈如何学STM32嵌入式开发
  4. 如何启用计算机上的无线网络连接,告诉大家win10无线网络连接如何打开
  5. 2018年英语计算机职称考试,2018年职称计算机考试报考指南大全
  6. ps怎么制作流体_ps相框制作教程:ps怎么制作相框效果
  7. 基于熵权法优劣解距离法_维普资讯中文期刊服务平台-基于改进TOPSIS方法的航空装备预研项目技术风险评估...
  8. Ubuntu中APUE 3rd中实例编译时err_sys函数找不到解决方法
  9. 我叫Java,2019年总结,大家请查收
  10. 2014.4新版uboot启动流程分析