C# 简单TCP协议
using System.Net.Sockets;
namespace TCPServer {
class Program {
static void Main(string[] args) {
int port = ;//端口
TcpClient tcpClient;//创建TCP连接对象(存入客服端所链接)
IPAddress[] serverIP= Dns.GetHostAddresses("127.0.0.1");//定义IP地址
IPAddress localAddres = serverIP[];//Ip地址;
TcpListener tcpListener = new TcpListener(localAddres, port);//监听套接字
tcpListener.Start();//开始监听
Console.WriteLine("服务器启动成功,等待用户接入。。。");//输出信息
try {
tcpClient = tcpListener.AcceptTcpClient();//每接收一个客服端生成一个TcpClient
NetworkStream networkStream = tcpClient.GetStream();//获取网络数据流
BinaryReader reader = new BinaryReader(networkStream);//定义数据读取对象
BinaryWriter writer = new BinaryWriter(networkStream);//定义数据写入对象
while(true) {
try {
string strReader = reader.ReadString();//接收消息
string[] strReaders = strReader.Split(new char[] { ' ' });//截取客服端信息
Console.WriteLine("有客服端接入,客户IP:" + strReaders[]);//输出接收客服端IP地址
string strWriter = "我是服务器,欢迎光临";//定义服务端要写的内容
Console.WriteLine("来自客服端的消息:" + strReaders[]);//输出接收的消息
writer.Write(strWriter);//向对方发送消息
}
catch {
break;
}
}
}
catch {
Console.WriteLine("接收数据失败");
}
}
}
}
View 服务端
namespace TCPClient {
class Program {
static void Main(string[] args) {
TcpClient tcpClient = new TcpClient();//创建一个TcpClient对象,自动分配主机IP地址和端口号
tcpClient.Connect("127.0.0.1", );//连接服务器,其IP和端口号为127.0.0.1和888
if (tcpClient != null) {
Console.WriteLine("连接服务器成功");
NetworkStream networkStream = tcpClient.GetStream();//获取网络数据流
BinaryReader reader = new BinaryReader(networkStream);//定义数据读取对象
BinaryWriter writer = new BinaryWriter(networkStream);//定义数据写入对象
string localip = "127.0.0.1";//存储本机IP,默认值为127.0.0.1
IPAddress[] ips = Dns.GetHostAddresses(Dns.GetHostName());//获取所有Ip地址
foreach (var item in ips) {
if (!item.IsIPv6SiteLocal)//如果不是ipv6
localip = item.ToString();
}
writer.Write(localip + " 你好服务器,我是客服端");//向服务器发送消息
while (true) {
try {
string strReader = reader.ReadString();//接收服务器发送的数据
if(strReader!=null) {
Console.WriteLine("来自服务器的消息:" + strReader);//输出接收服务器的消息
}
}
catch {
break;//出错退出循环
}
}
}
else {
Console.WriteLine("连接服务器错误");
}
}
}
}
View 客服端
上述代码,通俗易懂,注释详细,适合小白学习。
C# 简单TCP协议的更多相关文章
- Http协议与TCP协议简单理解(转)
在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解.TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上 ...
- Http协议与TCP协议简单理解
TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求.Http会通 ...
- TCP协议三次握手过程分析【图解,简单清晰】
转自:http://www.cnblogs.com/rootq/articles/1377355.html TCP(Transmission Control Protocol) 传输控制协议 TCP是 ...
- Http与协议TCP协议简单易懂
于C#编写代码,很多时候会遇到Http协议或TCP合约,这里做一个简单的了解. TCP对应于该传送层协议,和HTTP对应于应用层协议,从本质上讲,两者是没有可比性.Http该协议是基于TCP之上的,当 ...
- 基于Tcp协议的简单Socket通信实例(JAVA)
好久没写博客了,前段时间忙于做项目,耽误了些时间,今天开始继续写起~ 今天来讲下关于Socket通信的简单应用,关于什么是Socket以及一些网络编程的基础,这里就不提了,只记录最简单易懂实用的东西. ...
- 网络编程----------SOCKET编程实现简单的TCP协议
首先我们须要大致了解TCP的几点知识: 1.TCP的特点:面向连接的可靠性传输 2.TCP的三次握手建立连接和四次挥手释放连接.但为什么TCP要三次握手建立连接呢? 答:由于两次握手无法保证可靠性.若 ...
- 【转载】Http协议与TCP协议简单理解
在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解.TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上 ...
- Java基础之UDP协议和TCP协议简介及简单案例的实现
写在前面的废话:马上要找工作了,做了一年的.net ,到要找工作了发现没几个大公司招聘.net工程师,真是坑爹呀.哎,java就java吧,咱从头开始学呗,啥也不说了,玩命撸吧,我真可怜啊. 摘要: ...
- 关于Http协议与TCP协议的一些简单理解
TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求.Http会通 ...
随机推荐
- 陈硕 - Linux 多线程服务端编程 - muduo 网络库作者
http://chenshuo.com/book/ Muduo网络库源码分析(一) EventLoop事件循环(Poller和Channel)http://blog.csdn.net/nk_test/ ...
- SecureCRT 专题
SecureCRT在同一窗口打开多个标签:选中“在标签页中打开”即可 SecureCRT同时向多个tab窗口发送相同的命令 Step by step: 作为管理N台服务器,而又要执行相同命令又不想用脚 ...
- Windows7配置QT-Android开发环境!
配置QT5.2.0-Android版本: 进行windows7下的软件开发~不用使用eclipse开发android软件,配置之后就可以向写C++代码一样,去写APP在Android手机上去运行了! ...
- VUE在开发环境下实现跨域
1. 跨域设置 VUE项目的 config文件夹下index.js文件中修改 dev: proxyTable中的内容(默认是没有内容的): 添加内容: '/list': { target: 'http ...
- ArcGIS Runtime SDK for WPF 初始化
安装包 管理nuget包 Esri.ArcGISRuntime.WPF 也许还需要 Esri.ArcGISRuntime.Hydrography Esri.ArcGISRuntime.LocalSer ...
- ASP .NET Controller返回类型
返回类型 return View(model); 即返回htmlreturn Json("String"); 返回Json格式的数据return File(new byte[] { ...
- 读BeautifulSoup官方文档之html树的搜索(1)
之前介绍了有关的四个对象以及他们的属性, 但是一般情况下要在杂乱的html中提取我们所需的tag(tag中包含的信息)是比较复杂的, 现在我们可以来看看到底有些什么搜索的方法. 最主要的两个方法当然是 ...
- 开源数据源使用 DBCP 和 C3PO
jar包: commons-dbcp-1.4.jar commons-pool-1.5.6.jar mysql-connector-java-5.0.8-bin.jar 建立dbcp的配置文件 dbc ...
- 利用WIX制作安装包(1)
原文 利用WIX制作安装包(1) #installation 下载最新版本的WIX toolset 并安装DOWNLOAD Wix toolset V3.5之后的版本已经可以集成到visual stu ...
- 微信小程序把玩(六)模块化
原文:微信小程序把玩(六)模块化 模块化也就是将一些通用的东西抽出来放到一个文件中,通过module.exports去暴露接口.我们在最初新建项目时就有个util.js文件就是被模块化处理时间的 /* ...