需要引用 using System.Net;
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协议的更多相关文章

  1. Http协议与TCP协议简单理解(转)

    在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解.TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上 ...

  2. Http协议与TCP协议简单理解

    TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求.Http会通 ...

  3. TCP协议三次握手过程分析【图解,简单清晰】

    转自:http://www.cnblogs.com/rootq/articles/1377355.html TCP(Transmission Control Protocol) 传输控制协议 TCP是 ...

  4. Http与协议TCP协议简单易懂

    于C#编写代码,很多时候会遇到Http协议或TCP合约,这里做一个简单的了解. TCP对应于该传送层协议,和HTTP对应于应用层协议,从本质上讲,两者是没有可比性.Http该协议是基于TCP之上的,当 ...

  5. 基于Tcp协议的简单Socket通信实例(JAVA)

    好久没写博客了,前段时间忙于做项目,耽误了些时间,今天开始继续写起~ 今天来讲下关于Socket通信的简单应用,关于什么是Socket以及一些网络编程的基础,这里就不提了,只记录最简单易懂实用的东西. ...

  6. 网络编程----------SOCKET编程实现简单的TCP协议

    首先我们须要大致了解TCP的几点知识: 1.TCP的特点:面向连接的可靠性传输 2.TCP的三次握手建立连接和四次挥手释放连接.但为什么TCP要三次握手建立连接呢? 答:由于两次握手无法保证可靠性.若 ...

  7. 【转载】Http协议与TCP协议简单理解

    在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解.TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上 ...

  8. Java基础之UDP协议和TCP协议简介及简单案例的实现

    写在前面的废话:马上要找工作了,做了一年的.net ,到要找工作了发现没几个大公司招聘.net工程师,真是坑爹呀.哎,java就java吧,咱从头开始学呗,啥也不说了,玩命撸吧,我真可怜啊. 摘要: ...

  9. 关于Http协议与TCP协议的一些简单理解

    TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求.Http会通 ...

随机推荐

  1. 陈硕 - Linux 多线程服务端编程 - muduo 网络库作者

    http://chenshuo.com/book/ Muduo网络库源码分析(一) EventLoop事件循环(Poller和Channel)http://blog.csdn.net/nk_test/ ...

  2. SecureCRT 专题

    SecureCRT在同一窗口打开多个标签:选中“在标签页中打开”即可 SecureCRT同时向多个tab窗口发送相同的命令 Step by step: 作为管理N台服务器,而又要执行相同命令又不想用脚 ...

  3. Windows7配置QT-Android开发环境!

    配置QT5.2.0-Android版本: 进行windows7下的软件开发~不用使用eclipse开发android软件,配置之后就可以向写C++代码一样,去写APP在Android手机上去运行了! ...

  4. VUE在开发环境下实现跨域

    1. 跨域设置 VUE项目的 config文件夹下index.js文件中修改 dev: proxyTable中的内容(默认是没有内容的): 添加内容: '/list': { target: 'http ...

  5. ArcGIS Runtime SDK for WPF 初始化

    安装包 管理nuget包 Esri.ArcGISRuntime.WPF 也许还需要 Esri.ArcGISRuntime.Hydrography Esri.ArcGISRuntime.LocalSer ...

  6. ASP .NET Controller返回类型

    返回类型 return View(model); 即返回htmlreturn Json("String"); 返回Json格式的数据return File(new byte[] { ...

  7. 读BeautifulSoup官方文档之html树的搜索(1)

    之前介绍了有关的四个对象以及他们的属性, 但是一般情况下要在杂乱的html中提取我们所需的tag(tag中包含的信息)是比较复杂的, 现在我们可以来看看到底有些什么搜索的方法. 最主要的两个方法当然是 ...

  8. 开源数据源使用 DBCP 和 C3PO

    jar包: commons-dbcp-1.4.jar commons-pool-1.5.6.jar mysql-connector-java-5.0.8-bin.jar 建立dbcp的配置文件 dbc ...

  9. 利用WIX制作安装包(1)

    原文 利用WIX制作安装包(1) #installation 下载最新版本的WIX toolset 并安装DOWNLOAD Wix toolset V3.5之后的版本已经可以集成到visual stu ...

  10. 微信小程序把玩(六)模块化

    原文:微信小程序把玩(六)模块化 模块化也就是将一些通用的东西抽出来放到一个文件中,通过module.exports去暴露接口.我们在最初新建项目时就有个util.js文件就是被模块化处理时间的 /* ...