1.设计界面:

 
2.效果界面:
 
3.具体实现代码:
 

public partial class frmMain : Form
{
public frmMain()
{
InitializeComponent();
}

private Thread td;//声明线程对象
private TcpListener tcpListener; //声明侦听对象
private static string message = "";//记录发送的消息

private void frmMain_Load(object sender, EventArgs e)
{
td = new Thread(new ThreadStart(StartListen));//实例化线程类对象
td.Start();//启动线程
timer1.Start();//启动计时器
}

private void StartListen()//监听
{
message = "";//清空消息
tcpListener = new TcpListener(2029);//实例化侦听对象
tcpListener.Start();//开始监听
while(true)
{
TcpClient tclient = tcpListener.AcceptTcpClient();//接受连接请求
NetworkStream nstream = tclient.GetStream();// 获取数据流
byte[] mbyte = new byte[100];//建立缓存
int i = nstream.Read(mbyte,0,mbyte.Length);//将数据流写入缓存
message = Encoding.Default.GetString(mbyte, 0, i);//记录发送的消息
}
}

private void button2_Click(object sender, EventArgs e)//发送
{
try
{
IPAddress[] ip = Dns.GetHostAddresses(Dns.GetHostName());//获取主机名
string strmsg = "" + tbName.Text + "(" + ip[1].ToString() + ")" + DateTime.Now.ToLongTimeString() + "\n" +
this.rtbSend.Text + "\n";//定义消息格式
TcpClient client = new TcpClient(tbIp.Text, 2029);//实例化TcpClient对象
NetworkStream netStream = client.GetStream();//实例化NetworkStream网络流对象
StreamWriter wstream = new StreamWriter(netStream,Encoding.Default);//实例化数据写入对象
wstream.Write(strmsg);//将消息写入网络流
wstream.Flush();//释放网络流对象
wstream.Close();//关闭网络流对象
client.Close();//关闭TcpClient
rtbContent.AppendText(strmsg);//将发送的消息添加到文本框
rtbSend.Clear();//清空发送消息文本框
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}

private void timer1_Tick(object sender, EventArgs e)//计时器
{
if(message!="")
{
rtbContent.AppendText(message);//将接收到的消息添加到文本框中
rtbContent.ScrollToCaret();//自动滚动文本框的滚动条
message = "";
}
}

private void frmMain_FormClosed(object sender, FormClosedEventArgs e) //窗体关闭
{
if (tcpListener != null)//判断侦听对象是否关闭
tcpListener.Stop();//停止侦听
if(td!=null)//判断线程是否为空
{
if (td.ThreadState == ThreadState.Running)//判断线程是否正在运行
td.Abort();//终止线程
}
}

}

网络编程 socket-实例的更多相关文章

  1. 网络编程socket基本API详解(转)

    网络编程socket基本API详解   socket socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信. socket ...

  2. Android 网络编程 Socket

    1.服务端开发 创建一个Java程序 public class MyServer { // 定义保存所有的Socket,与客户端建立连接得到一个Socket public static List< ...

  3. 网络编程Socket之TCP之close/shutdown具体解释(续)

    接着上一篇网络编程Socket之TCP之close/shutdown具体解释 如今我们看看对于不同情况的close的返回情况和可能遇到的一些问题: 1.默认操作的close 说明:我们已经知道writ ...

  4. 铁乐学Python_Day33_网络编程Socket模块1

    铁乐学Python_Day33_网络编程Socket模块1 部份内容摘自授课老师的博客http://www.cnblogs.com/Eva-J/ 理解socket Socket是应用层与TCP/IP协 ...

  5. Python网络编程socket

    网络编程之socket 看到本篇文章的题目是不是很疑惑,what is this?,不要着急,但是记住一说网络编程,你就想socket,socket是实现网络编程的工具,那么什么是socket,什么是 ...

  6. java网络编程socket\server\TCP笔记(转)

    java网络编程socket\server\TCP笔记(转) 2012-12-14 08:30:04|  分类: Socket |  标签:java  |举报|字号 订阅     1 TCP的开销 a ...

  7. linux网络编程-socket(37)

    在编程的时候需要加上对应pthread开头的头文件,gcc编译的时候需要加了-lpthread选项 第三个参数是线程的入口参数,函数的参数是void*,返回值是void*,第四个参数传递给线程函数的参 ...

  8. python网络编程-socket编程

     一.服务端和客户端 BS架构 (腾讯通软件:server+client) CS架构 (web网站) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二.OSI七层 ...

  9. Python开发【第八篇】:网络编程 Socket

    Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...

  10. python网络编程socket /socketserver

    提起网络编程,不同于web编程,它主要是C/S架构,也就是服务器.客户端结构的.对于初学者而言,最需要理解的不是网络的概念,而是python对于网络编程都提供了些什么模块和功能.不同于计算机发展的初级 ...

随机推荐

  1. codeforces567E. President and Roads

    题目大意:总统要回家,会经过一些街道,每条街道都是单向的并且拥有权值.现在,为了让总统更好的回家,要对每一条街道进行操作:1)如果该街道一定在最短路上,则输出“YES”.2)如果该街道修理过后,该边所 ...

  2. 关于手机"内存"的解答

    关于手机"内存"的解答 内存小/少 手机内存在手机出厂的时候就已经固定了,其总量无法调整,不能像电脑一样加内存条.所以想提升可用内存,除了经常清理系统,或者把不是必须的应用移到SD ...

  3. POJ2524 Ubiquitous Religions(并查集)

    题目链接. 分析: 给定 n 个点和 m 条无项边,求连通分量的数量.用并查集很简单. #include <iostream> #include <cstdio> #inclu ...

  4. WordPress ‘crypt_private()’方法远程拒绝服务漏洞

    漏洞名称: WordPress ‘crypt_private()’方法远程拒绝服务漏洞 CNNVD编号: CNNVD-201306-250 发布时间: 2013-06-20 更新时间: 2013-06 ...

  5. chrome性能测试框架webpagereplay

    今天学习了下chrome的性能测试框架,其实它可用于在稳定的环境下测试浏览器向服务器发起http请求至下载请求文档到本地的这个过程.好处在于,其原理在于先将第一次请求回来的文档下载在本地,然后在本地模 ...

  6. I - Tunnel Warfare - hdu 1540(区间合并更新)

    题意:在抗日战争期间,地道战在华北平原得到广泛的实施,一般而言,村庄通过一些隧道在一条线上连接,除了两端剩下的每个村庄都有两个相连. 侵略者会频繁的对这些村庄进行扫荡,并且摧他们的地道,当然八路军会把 ...

  7. 重写扫雷(基于jQuery) 新手 有不足的地方敬请谅解

    记得刚开始学习js的时候写过一次扫雷,一个下午的时间被计算搞死,整个头是晕乎. 入职后,蹭着空闲的时间随手写了一个扫雷. 直接上代码了 (function() { function module() ...

  8. java笔记8之选择结构IF

    注意1 A比较表达式无论简单还是复杂,结果必须是boolean类型        B:if语句控制的语句体如果是一条语句,大括号可以省略:          如果是多条语句,就不能省略.建议永远不要省 ...

  9. cmake编译错误:“No CMAKE_C_COMPILER could be found”的原因

    发生此错误,原因在于,进行configure命令时,没有选择正确的编译器,比如电脑上安装的是VS2012,想编译位64位,选择了VS2012 X64,这样就会报错了,选择VS2012就对了,一样可以编 ...

  10. hyperv虚拟机网络速度慢问题的解决办法

    服务器安装了windows2012R2进行虚拟化,虚拟机也是用的是windows2012R2的操作系统,这样可以一次激活对应的虚拟机. 在使用虚拟机的过程中发现问题,虚拟机主机的网速正常,无论是ftp ...