(转)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通过三次握手建立连接后客户端服务端的内核都分别开辟资源,这时候开始进行 ...
随机推荐
- Android中获取手机电量信息
有些时候我们需要在我们的应用上为用户展示当前手机的电量,这时候我们就需要用到广播了,我们都知道在动态注册广播的时候,我们需要传入一个BroadcastReceiver类对象,还有一个意图过滤器Inte ...
- Ajax -- 原理及简单示例
1. 什么是Ajax •Ajax被认为是(AsynchronousJavaScript and XML的缩写).现在,允许浏览器与服务器通信而无须刷新当前页面的技术都被叫做Ajax. 2. Ajax ...
- 2017版:KVM 性能优化之内存优化
我们说完CPU方面的优化,接着我们继续第二块内容,也就是内存方面的优化.内存方面有以下四个方向去着手: EPT 技术 大页和透明大页 KSM 技术 内存限制 1. EPT技术 EPT也就是扩展页表,这 ...
- define用于条件编译
格式: #ifndef _test.h_ //这里放不想被重复包含的代码 #define _test.h_ #endif define用于条件编译的意思是不想让头文件重复编译,头文件重复编译会造成的结 ...
- 不合法的请求字符,不能包含\uxxxx格式的字符
不合法的请求字符,不能包含\uxxxx格式的字符 ,不支持数组转json_encode()格式, 需要直接将数组,拼合成 json格式 ** * 微信api不支持中文转义的json结构 * @para ...
- python脚本5_求素数
#求素数 #素数:只能被1和它自己整除 n = int(input('Please input a number >>>')) flag = False for i in range ...
- WPF中的事件列表 .
以下是WPF中的常见事件汇总表(按字母排序),翻译不见得准确,但希望对你有用. 事件 描述 Annotation.AnchorChanged 新增.移除或修改 Anchor 元素时发生. Annota ...
- poj2478欧拉函数
打表欧拉函数,求2到n的欧拉函数和 #include<map> #include<set> #include<cmath> #include<queue> ...
- sql server数据库课程设计分析
课题:能源管理收费系统 系统功能的基本要求: (1)用户基本信息的录入:包括用户的单位.部门.姓名.联系电话.住址 : (2)用户水.电.气数据的录入(每个月的数据的录入): (3)水.电.气价格的管 ...
- Mac PyCharm专业版破解
1. 先在PyCharm官网:http://www.https://www.jetbrains.com/pycharm/,下载PyCharm专业版安装包 2. 安装PyCharm 3. 终端执行: s ...