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# ...
随机推荐
- Kubeadm and Kops
Kubeadm是Kubernetes官方推出的快速部署Kubernetes的集群工具,其思路是将Kubernetes相关服务容器化以简化部署. With the release of kubeadm ...
- LeetCode 100.相同的树(C++)
给定两个二叉树,编写一个函数来检验它们是否相同. 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的. 示例 1: 输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1 ...
- Linux下jdk安装过程
注意:rpm 与软件相关命令 相当于 window 下的软件助手 管理软件 1 查看当前 Linux 系统是否已经安装 java 1)在命令窗口输入,可以查看系统自带的OpenJDK版本信息. jav ...
- 禅道 xampp中的mysql启动时无法产生err文件
使用opt/lampp/lampp start命令启动 错误提示:root@zabbix_server ~]# /opt/lampp/bin/mysqld_safe_helper: Can‘t ...
- sed常用命令
sed也是一个管道命令. sed [-nefr] [动作] -n 加上-n参数后,只有经过sed特殊处理的那些行才会被列出来 -e 直接在命令行模式进行sed的动作编辑 -i 直接修改读取的文件内容 ...
- vue(2.0)+vue-router(2.0)+vuex(2.0)实战
好久没更新自己的知识库,刚好借双十一的契机,用上了vue(2.0)+vue-router(2.0)+vuex(2.0)来开发公司的双十一电商活动. 项目目录结构: 运行: npm install np ...
- 架构实战项目心得(十四):spring-boot结合Swagger2构建RESTful API测试体系
一.添加依赖: <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-s ...
- 问题集录01--java对list列表进行排序
用Collections.sort方法对list排序有两种方法 第一种是list中的对象实现Comparable接口,如下: /** * 根据order对User排序 */ public class ...
- log4j.properties 基本配置
log4j.rootLogger=WARN,stdout,D log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender ...
- 点击select下拉框,触发事件
<div class="controls moneycheck floatleft"> <select class="span12 chosen_cat ...