网络编程 socket-实例
1.设计界面:



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-实例的更多相关文章
- 网络编程socket基本API详解(转)
网络编程socket基本API详解 socket socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信. socket ...
- Android 网络编程 Socket
1.服务端开发 创建一个Java程序 public class MyServer { // 定义保存所有的Socket,与客户端建立连接得到一个Socket public static List< ...
- 网络编程Socket之TCP之close/shutdown具体解释(续)
接着上一篇网络编程Socket之TCP之close/shutdown具体解释 如今我们看看对于不同情况的close的返回情况和可能遇到的一些问题: 1.默认操作的close 说明:我们已经知道writ ...
- 铁乐学Python_Day33_网络编程Socket模块1
铁乐学Python_Day33_网络编程Socket模块1 部份内容摘自授课老师的博客http://www.cnblogs.com/Eva-J/ 理解socket Socket是应用层与TCP/IP协 ...
- Python网络编程socket
网络编程之socket 看到本篇文章的题目是不是很疑惑,what is this?,不要着急,但是记住一说网络编程,你就想socket,socket是实现网络编程的工具,那么什么是socket,什么是 ...
- java网络编程socket\server\TCP笔记(转)
java网络编程socket\server\TCP笔记(转) 2012-12-14 08:30:04| 分类: Socket | 标签:java |举报|字号 订阅 1 TCP的开销 a ...
- linux网络编程-socket(37)
在编程的时候需要加上对应pthread开头的头文件,gcc编译的时候需要加了-lpthread选项 第三个参数是线程的入口参数,函数的参数是void*,返回值是void*,第四个参数传递给线程函数的参 ...
- python网络编程-socket编程
一.服务端和客户端 BS架构 (腾讯通软件:server+client) CS架构 (web网站) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二.OSI七层 ...
- Python开发【第八篇】:网络编程 Socket
Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...
- python网络编程socket /socketserver
提起网络编程,不同于web编程,它主要是C/S架构,也就是服务器.客户端结构的.对于初学者而言,最需要理解的不是网络的概念,而是python对于网络编程都提供了些什么模块和功能.不同于计算机发展的初级 ...
随机推荐
- AngularJs 【使用】 -- ng-repart 排序使用
1.单字段 ng-repeat="item in dataList | orderBy:'field' " 2.多字段 ng-repeat="item in dataLi ...
- Net Core 项目实战之权限管理系统(0)
0 前言 Net Core 项目实战之权限管理系统(0) 无中生有 0 http://www.cnblogs.com/fonour/p/5848933.html 学习的最好方法就是动手去做,这里以 ...
- iOS证书快要过期怎么办?
说法一: 1.先revoke你的Certificate,重新生成一个新的. 2.Edit一下你的证书,选择新的Certificate. 3.下载覆盖之前的证书,就可以了. 这个帐号发布的产品不会受到影 ...
- 温故而知新 C++ 数组与指针
#include <stdio.h> using namespace std; int main(int argc, _TCHAR* argv[]) { ]; ] = {,,,}; &qu ...
- 转:ElasticSearch 简单入门
原文来自于:http://www.oschina.net/translate/elasticsearch-getting-started?cmp 教程样例 我们将要部署一个非常简单的应用--在一个部门 ...
- 转:如何创建.htaccess文件
方法1.开始-运行-键入cmd,打开cmd窗口 此时的cmd窗口路径是C:\Documents and Settings\username> 键入以下(不包括括号内信息): copy con . ...
- jquery.metadata.js使用分析
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- ExecuteNonQuery返回负数
用 ExecuteNonQuery 执行sql语句"select * from table where id=@id"如果检索出符合条件的ID ExecuteNonQueue 会返 ...
- 下载doxygen
官网首页:http://www.stack.nl/~dimitri/doxygen/index.html 下载页面:http://www.stack.nl/~dimitri/doxygen/downl ...
- STL_iterator迭代器(2)——几种迭代器对象的用法
要学会使用迭代器和容器以及算法,需要学习下面的新技术. 一.流和迭代器 本书的很多例子程序使用I/O流语句来读写数据.例如: int value; cout << "Enter ...