(转)winform下TCP通信的简单应用
本文转载自:http://blog.csdn.net/wanlong360599336/article/details/7557064
先看效果图:

TCP比较繁琐的就是三次握手定理,每次再发送数据前都要先建立连接确认。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.IO; namespace TCP
{
public partial class Form1 : Form
{
public Form1()
{ InitializeComponent();
}
//启动服务端
TcpListener listener;
delegate void SetTextCallBack(string text);
private void button1_Click(object sender, EventArgs e)
{
//try
//{
label2.Text = "服务端已开启..";
button1.Enabled = false;
listener = new TcpListener(IPAddress.Any, );
listener.Start();
Thread th = new Thread(new ThreadStart(ReceiveMsg));
th.Start();
th.IsBackground = true;
//}
//catch (Exception ex)
//{
// Console.WriteLine(ex.Message);
//} } public void ReceiveMsg()
{ while (true)
{
TcpClient client = listener.AcceptTcpClient();
byte[] buffer = new byte[];
NetworkStream stream = client.GetStream();
int len = stream.Read(buffer, , buffer.Length);
string msg = Encoding.Unicode.GetString(buffer, , len);
SetText(msg); stream.Flush();
stream.Close();
client.Close(); } }
public void SetText(string text)
{
try
{
if (this.richTextBox1.InvokeRequired)
{
SetTextCallBack d = new SetTextCallBack(SetText);
this.Invoke(d, new object[] { text });
}
else
{ this.richTextBox1.Text += DateTime.Now.ToString() + "\n" + text + "\n";
} }
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
} private void button2_Click(object sender, EventArgs e)
{
try
{
//FileStream fs = new FileStream(textBox2.Text,FileMode.OpenOrCreate,FileAccess.Read);
//byte[] buff=new byte[fs.Length];
//int rea = fs.Read(buff,0,buff.Length);
string ip = textBox1.Text;
string msg = richTextBox2.Text;
//msg = string.Format("{0}:{1}:{2}:{3}:{4}:{5}",1,DateTime.Now.Ticks,"007","www","32",msg);
TcpClient client = new TcpClient();
client.Connect(IPAddress.Parse(ip), );
NetworkStream stream = client.GetStream();
byte[] buffer = Encoding.Unicode.GetBytes(msg);
stream.Write(buffer, , buffer.Length);
//stream.Write(buff,0,rea);
//label6.Text = "文件发送成功!";
MessageBox.Show("发送成功!");
}
catch (Exception ex)
{
MessageBox.Show("服务端未开启!");
}
} private void button2_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
this.button2_Click(sender,e);
}
}
//存放的目录
// private void button4_Click(object sender, EventArgs e)
// {
// FolderBrowserDialog fbd = new FolderBrowserDialog();
// if(fbd.ShowDialog()==DialogResult.OK)
// {
// textBox3.Text = fbd.SelectedPath;
// }
// }
//发送的文件
/// private void button3_Click(object sender, EventArgs e)
//{
// OpenFileDialog ofd = new OpenFileDialog();
// if(ofd.ShowDialog()==DialogResult.OK)
// {
// textBox2.Text = ofd.FileName;
// }
// }
//文件发送
//private void button5_Click(object sender, EventArgs e)
//{
// FileStream fs = new FileStream(textBox2.Text,FileMode.Open,FileAccess.Read);
// byte[] buffer = new byte[fs.Length];
// int rea=fs.Read(buffer,0,buffer.Length);
// TcpClient client = new TcpClient();
// string ip = textBox1.Text;
// client.Connect(IPAddress.Parse(ip),3000);
// NetworkStream ns = client.GetStream();
// ns.Write(buffer,0,rea);
// MessageBox.Show("文件发送成功!");
// fs.Flush();
// ns.Flush();
// fs.Close();
// ns.Close();
//} }
}
(转)winform下TCP通信的简单应用的更多相关文章
- (转)winform下UPD通信的简单应用
本文转载自:http://blog.csdn.net/wanlong360599336/article/details/7557046 先看效果图: 使用UDP的好处就是不需要三次握手,但是缺点就是存 ...
- java 网络编程之TCP通信和简单的文件上传功能
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- JAVA基础知识之网络编程——-基于TCP通信的简单聊天室
下面将基于TCP协议用JAVA写一个非常简单的聊天室程序, 聊天室具有以下功能, 在服务器端,可以接受客户端注册(用户名),可以显示注册成功的账户 在客户端,可以注册一个账号,并用这个账号发送信息 发 ...
- linux 服务器/客户端 tcp通信的简单例子
昨天弄了sublime之后没有弄输入中文的了,学生党来着,刚好可以练练英语(英语渣渣,还要考六级),所以注释都写英文的(语法什么的就别太深究了) 服务器端: /*start from the very ...
- 基于Tcp协议的简单Socket通信实例(JAVA)
好久没写博客了,前段时间忙于做项目,耽误了些时间,今天开始继续写起~ 今天来讲下关于Socket通信的简单应用,关于什么是Socket以及一些网络编程的基础,这里就不提了,只记录最简单易懂实用的东西. ...
- Linux下TCP网络编程与基于Windows下C#socket编程间通信
一.linux下TCP网络编程基础,需要了解相关函数 Socket():用于套接字初始化. Bind():将 socket 与本机上的一个端口绑定,就可以在该端口监听服务请求. Listen():使s ...
- C#网络编程TCP通信实例程序简单设计
C#网络编程TCP通信实例程序简单设计 采用自带 TcpClient和TcpListener设计一个Tcp通信的例子 只实现了TCP通信 通信程序截图: 压力测试服务端截图: 俩个客户端链接服务端测试 ...
- 上位机面试必备——TCP通信灵魂二十问【下】
上篇文章跟大家介绍了TCP通信常见的前10个面试题,没看过的小伙伴可以点击下方链接进行查看: 上位机面试必备——TCP通信灵魂二十问[上] 今天就后面的10个面试题接着做下说明:欢迎关注[dotNet ...
- TCP通信简单梳理
一.什么是TCP协议 TCP协议是一种面向连接的可靠的通信协议,最重要的两个特点:连接.可靠. 二.TCP是如何进行通信的 TCP通过三次握手建立连接后客户端服务端的内核都分别开辟资源,这时候开始进行 ...
随机推荐
- Hibernate -- Session的主键生成策略
*缓存:集合--集合放置到内存中 * 只要session存在 session的一级缓存肯定存在. *当执行查询时,以oid为oid=1条件到session的一级缓存中查找oi ...
- python学习笔记(virtualenv下载安装)
之前博客评论中有人建议我面对多个python版本的情况.可以使用virtualenv这个python虚拟沙盒 首页是利用pip下载.关于pip如何下载安装前面的博客中已经提到就不细说 cmd直接进入p ...
- cloudsim仿真过程中内存占用过大问题的解决
在写<云环境下基于预算和截止期约束的科学工作流弹性资源提供和调度>这篇文章时用到了cloudsim仿真软件进行实验仿真,在实验过程中遇到了当仿真执行时间过长时程序总是不能正常结束,由于仿真 ...
- spring08事务
实现的效果是: 用户在购买股票的时候,钱减少!股票增加! 模拟出现的问题是! 用户在购买股票的时候,钱减少! 股票没有增加! 01.创建对应的数据库 02.创建对应实体类 public class ...
- HTTPS 性能优化 -- 基于协议和配置的优化
基于协议和配置的优化 1 前言 上文讲到 HTTPS 对用户访问速度的影响. 本文就为大家介绍 HTTPS 在访问速度,计算性能,安全等方面基于协议和配置的优化. 2 HTTPS 访问速度优化 2.1 ...
- PostgreSQL流复制记录
参考了别人的部分,添加了自己在实践中的内容,仅做记录. 1.同步流复制中 主机操作 1.1postgresql.conf wal_level = hot_standby # 这个是设置主为wal的主机 ...
- Android 静默安装/后台安装& Root permission
Android 静默安装/后台安装& Root permission 静默安装其实很简单,今天在网上找资料找半天都说的很复杂,什么需要系统安装权限.调用系统隐藏的api.需要系统环境下编译.需 ...
- java调用cmd执行maven命令
一.原理介绍 Java的Runtime.getRuntime().exec(commandStr)可以调用执行cmd指令. cmd /c dir 是执行完dir命令后封闭命令窗口. cmd /k di ...
- Lua学习---编译生成lua和luac
众所周知,Lua是一种强大的脚本语言,并且这种语言是用C语言实现的.为什么要学习这门语言?因为它可以增强我看C语言代码的功底. 我下的Lua版本是Lua5.3,关于Lua5.3的简介如下: http: ...
- jQuery attr 与 prop 区别最简单分析
比较经典的解释: 在处理html元素本身就带有的固有属性时,使用prop方法,对于html元素中,我们自己定义的dom属性时,使用attr方法. 而咱自己的理解是: attr会忠实的获取设置dom标签 ...