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. Python二分查找

    代码: 时间复杂度:O(log2n) #!/usr/bin/env python #coding:utf-8 import copy from copy import deepcopy ''' def ...

  2. java 属性

    //非静态类 不能定义静态属性/方法/静态类, 可以定义静态常量属性. public class A{ public class B{ public static String  _str; //❌, ...

  3. Xcode can't verify the identity of the server

    当升级了苹果系统到 OS X El Captain 之后  ,打开Xcode 有时候会报错 如图 而且打开 svn  也会出类似错误  点击continue  了  下次 还会 出现 .这个很好解决 ...

  4. Win7主题被禁用

    今天早上干了一件傻缺的事,打开电脑的时候,某卫士提醒开机速度击败全国0.2%的电脑,之后点了优化...随后就发生了接下来的一幕: win7下面的主题都不能使用了,只能使用那种复古(很丑的样式,看着很不 ...

  5. onItemClickListener监听的整个item的点击。如何只监听那个framelayout的点击 onItemClickListener监听的整个item的点击。如何只监听那个framelayout的点击

    已经知道了.复写getView()的时候,在内部Viewholder.length.setOnClickListener(匿名内部类)   然后新建一个接口方进去 ,然后外面的listView设置&l ...

  6. 14.4.5 System Tablespace 系统表空间

    14.4.5 System Tablespace 系统表空间 InnoDB 系统表空间包含InnoDB 数据目录(元数据 用于InnoDB相关对象)和是存储区域用于doublewrite buffer ...

  7. CentOS 6.5 安装realtek RTL8188CE无线网卡

    首先,要检查一下网络适配器的型号. [root@localhost sam]# lspci -nn | grep -i net03:00.0 Ethernet controller [0200]: R ...

  8. 黑马程序员_Java基础常识

    一.基础常识 1,软件开发 1)什么是软件?软件:一系列按照特定顺序组织的计算机数据和指令的集合. 常见的软件 系统软件 如:DOS,windows,Linux等. 应用软件: 如:扫雷,迅雷,QQ等 ...

  9. 下载gtest

    gtest的官网地址:https://github.com/google/googletest 方式一:下载打包好的版本 在github的页面上可以直接下载打包好的gtest,下载入口如下图所示: 方 ...

  10. PCRE

    http://blog.sina.com.cn/s/blog_6a1837e901010ckv.html http://hubeihuyanwei.blog.163.com/blog/static/2 ...