TcpListener、TcpClient
1.TcpClient
using System;
using System.Text;
using System.Net.Sockets; namespace tcpclient
{
class tcpclient
{
static void Main(string[] args)
{
try
{
//建立客户端套接字
TcpClient tcpclnt = new TcpClient();
Console.WriteLine("正在连接服务器..."); //连接服务器
tcpclnt.Connect("127.0.0.1", ); //得到客户端的流
NetworkStream stm = tcpclnt.GetStream();
while (true)
{
Console.Write("客户端说:");
string str = Console.ReadLine();//输入说话内容
//发送字符串
System.Text.UTF8Encoding utf8 = new UTF8Encoding(); //可以处理中文
byte[] ba = utf8.GetBytes(str);
stm.Write(ba, , ba.Length); //接收从服务器返回的信息
byte[] bb = new byte[];
int k = stm.Read(bb, , );
//输出服务器端返回的信息
Console.WriteLine("服务器说:" + utf8.GetString(bb, , k));
}
tcpclnt.Close(); }
catch (Exception e)
{
Console.WriteLine("错误..." + e.StackTrace);
}
} }
}
2.TcpListener
using System;
using System.Text;
using System.Net.Sockets;
using System.Net; namespace tcpchater
{
class tcpserver
{
static void Main(string[] args)
{
try
{
//初始化监听,端口为8001
TcpListener myList = new TcpListener(IPAddress.Parse("127.0.0.1"), );
//开始监听服务器端口
myList.Start(); Console.WriteLine("启动服务器端,端口服务...");
Console.WriteLine("本地节点为:" + myList.LocalEndpoint);//LocalEndpoint属性 标识正用于侦听传入客户端连接请求的本地网络接口和端口号
Console.WriteLine("等待客户端连接..."); //等待处理接入连接请求
Socket s = myList.AcceptSocket(); //新建立的连接用套接字s表示
Console.WriteLine("客户端连接来自 " + s.RemoteEndPoint + " 已上线.");
while (true)
{
System.Text.UTF8Encoding utf8 = new UTF8Encoding(); //可以处理中文
//接收客户信息
byte[] b = new byte[];
int k = s.Receive(b);
Console.Write("客户端说:" + utf8.GetString(b, , k));
Console.WriteLine(); Console.Write("服务器端说:");
//处理客户端请求,给客户端回应
string str = Console.ReadLine();
s.Send(utf8.GetBytes(str));
}
//释放资源,结束监听
s.Close();
myList.Stop(); }
catch (Exception e)
{
Console.WriteLine("错误..." + e.StackTrace);
}
}
}
}
TcpListener、TcpClient的更多相关文章
- 跟随上次的socket sever,追加Tcplistener、Httplistener的server
一.Tcplistener搭建web server 1.同socket类似,Tcplistener其实是对socket的封装,方便编程,先初始化tcplistener并且开始监听 //初始化端点信息 ...
- [C#]使用TcpListener及TcpClient开发一个简单的Chat工具
本文为原创文章.源代码为原创代码,如转载/复制,请在网页/代码处明显位置标明原文名称.作者及网址,谢谢! 本文使用的开发环境是VS2017及dotNet4.0,写此随笔的目的是给自己及新开发人员作为参 ...
- TcpListerner、TcpClient 、邮件发送MailMessage、SmtpClient类
一.服务端 TcpListener server = );//定义监听器 server.Start();//启动监听器 ]; //创建一个容器用于接受数据 string data = null; wh ...
- muduo::Connector、TcpClient分析
Connector TcpClient Connector Connector用来发起连接. 在非堵塞网络中,主动发起连接比被动接收连接更为复杂,由于要考虑错误处理,还要考虑重试. 主要难点在于 1. ...
- GJM :异步Socket [转载]
原帖地址:http://blog.csdn.net/awinye/article/details/537264 原文作者:Awinye 目录(?)[-] 转载请原作者联系 Overview of So ...
- 你也可以写聊天程序 - C# Socket学习1
简述 我们做软件工作的虽然每天都离不开网络,可网络协议细节却不是每个人都会接触和深入了解.我今天就来和大家一起学习下Socket,并写一个简单的聊天程序. 一些基础类 首先我们每天打开浏览器访问网页信 ...
- 你也可以写个聊天程序 - C# Socket学习1
原文:你也可以写个聊天程序 - C# Socket学习1 简述 我们做软件工作的虽然每天都离不开网络,可网络协议细节却不是每个人都会接触和深入了解.我今天就来和大家一起学习下Socket,并写一个简单 ...
- C#网络编程入门之UDP
目录: C#网络编程入门系列包括三篇文章: (一)C#网络编程入门之UDP (二)C#网络编程入门之TCP (三)C#网络编程入门之HTTP 一.概述 UDP和TCP是网络通讯常用的两个传输协议,C# ...
- C#网络编程入门之TCP
目录: C#网络编程入门系列包括三篇文章: (一)C#网络编程入门之UDP (二)C#网络编程入门之TCP (三)C#网络编程入门之HTTP 一.概述 UDP和TCP是网络通讯常用的两个传输协议,C# ...
随机推荐
- 《大数据日知录》读书笔记-ch16机器学习:分布式算法
计算广告:逻辑回归 千次展示收益eCPM(Effective Cost Per Mille) eCPM= CTR * BidPrice 优化算法 训练数据使用:在线学习(online learning ...
- 009-MailUtils工具类模板
版本一:JavaMail的一个工具类 package ${enclosing_package}; import java.security.GeneralSecurityException; impo ...
- 遇到Caused by: java.lang.NoClassDefFoundError: javax/validation/ParameterNameProvider
今天在做spring和hibernate整合的时候遇到这个问题 网上搜找到这里有解决办法 http://blog.csdn.net/jueshengtianya/article/details/122 ...
- 【c++】常识易混提示
1. struct 和 class 唯一的区别:默认的成员保护级别和默认的派生保护级别不同(前者为public,后者为private). 2. int *p = new int[23]; de ...
- js 字符串转dom 和dom 转字符串
js 字符串转dom 和dom 转字符串 博客分类: JavaScript 前言: 在javascript里面动态创建标准dom对象一般使用: var obj = document.createE ...
- Java给树加子节点个数统计
通过后台实现 private List<Photo> getChildren(Photo photo) { List<Photo> children = new ArrayLi ...
- 跨文件代码跳转插件:Ctags
1.通过package control搜索Ctags 2.Enter安装,等待其安装完成 3.下载ctags可执行程序,链接:https://pan.baidu.com/s/1jIINAxo 密码:4 ...
- UML关系
UML关系详解 1.关联关系(association) 连接模型元素及链接实例,用一条实线来表示 2.依赖关系(dependency) 表示一个元素以某种方式依赖于另一个元素,用一条虚线加箭头来表示 ...
- package.json中^符号和~符号前缀的区别
开发中经常会使用npm install 安装依赖包,经常会看到^符号和~符号,现将二者的区别总结如下: 版本号 x.y.z : z :表示一些小的bugfix, 更改z的号, y ...
- 在 Azure 上创建和链接 MySQL 数据库
本快速入门介绍了如何使用 Azure 门户创建并连接 MySQL 数据库.在本教程中完成的所有操作均符合 1 元试用条件. 开始之前如果您还没有 Azure 账户,可以申请 1 元试用账户 步骤1:创 ...