HelloServer是一个在1234端口监听的服务端程序,它接受客户送来的数据,并且把这些数据解释为响应的ASCII字符,再对客户做出类似“Hello,...!"这样的响应。以下是HelloServer的代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text; namespace HelloServer
{
class Program
{
static void Main(string[] args)
{
string host = "localhost";
IPAddress ip = Dns.Resolve(host).AddressList[];
int port = ;
TcpListener lst = new TcpListener(ip,port);
//开始监听
lst.Start(); //进入等待客户的无限循环
while (true)
{
Console.Write("等待连接。。。。");
TcpClient c = lst.AcceptTcpClient(); Console.WriteLine("客户已连接");
NetworkStream ns = c.GetStream();
//获取客户发来的数据
byte [] request = new byte[];
int bytesRead = ns.Read(request, , request.Length);
string input = Encoding.ASCII.GetString(request, , bytesRead); Console.WriteLine("客户请求:{0}",input); //构造返回数据
string output = "Hello, " + input + "!";
byte[] hello = Encoding.ASCII.GetBytes(output);
try
{
ns.Write(hello,,hello.Length);
ns.Close();
c.Close();
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
lst.Stop();
}
}
}

编译之后运行,程序会显示如下:

输出结果

等待连接。。。。

这时服务程序已经进入了等待连接的循环。如果不关闭控制台端口,这个程序会一直等待。

现在编写客户端程序HelloClient,客户端代码如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Sockets;
using System.Text; namespace HelloClient
{
class Program
{
static void Main(string[] args)
{
try
{
string host = "localhost";
int port = ;
TcpClient c = new TcpClient(host,port);
NetworkStream ns = c.GetStream();
//构造请求数据
string output = "reader";
byte[] name = Encoding.ASCII.GetBytes(output);
ns.Write(name,,name.Length);
byte [] response = new byte[];
//读取服务器响应
int bytesRead = ns.Read(response, , response.Length);
Console.WriteLine(Encoding.ASCII.GetString(response,,bytesRead));
c.Close();
}
catch (Exception e)
{ Console.WriteLine(e.ToString());
}
}
}
}

输出结果

Hello,Reader!

而在服务端,输出变成了

输出结果

等待连接。。。。客户已连接

客户请求:Reader

等待连接。。。。

记住先开启服务端,在开启客户端的请求。不然会报错!

截图看运行结果

使用TCP的HelloServer的更多相关文章

  1. 服务器端与客户端TCP连接入门(一)

    Java中使用Socket(即套接字)完成TCP程序的开发 服务器端使用ServerSocket接收客户端的连接请求,每一个客户端都使用一个Socket对象表示 在服务器端每次运行时都要使用accep ...

  2. Unity Socket TCP

    using UnityEngine; using System.Collections; using System.Collections.Generic; using System.Net.Sock ...

  3. Tcp/ip 报文解析

    在编写网络程序时,常使用TCP协议.那么一个tcp包到底由哪些东西构成的呢?其实一个TCP包,首先需要通过IP协议承载,而IP报文,又需要通过以太网传送.下面我们来看看几种协议头的构成 一 .Ethe ...

  4. C#高性能TCP服务的多种实现方式

    哎~~ 想想大部分园友应该对 "高性能" 字样更感兴趣,为了吸引眼球所以标题中一定要突出,其实我更喜欢的标题是<猴赛雷,C#编写TCP服务的花样姿势!>. 本篇文章的主 ...

  5. Android实现TCP断点上传,后台C#服务实现接收

    终端实现大文件上传一直都是比较难的技术,其中涉及到后端与前端的交互,稳定性和流量大小,而且实现原理每个人都有自己的想法,后端主流用的比较多的是Http来实现,因为大多实现过断点下载.但稳定性不能保证, ...

  6. 漫谈TCP

    不得不承认,tcp是一个非常复杂的协议.它包含了RFC793及之后的一些协议.能把tcp的所有方面面面具到地说清楚,本身就是个很复杂的事情.如果再讲得枯燥,那么就会更让人昏昏欲睡了.本文希望能尽量用稍 ...

  7. 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.1

    HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...

  8. TCP/IP基础

    TCP/IP 是用于因特网 (Internet) 的通信协议. 计算机通信协议是对那些计算机必须遵守以便彼此通信的规则的描述. 什么是 TCP/IP? TCP/IP 是供已连接因特网的计算机进行通信的 ...

  9. TCP/IP之TCP_NODELAY与TCP_CORK

    TCP/IP之Nagle算法与40ms延迟提到了Nagle 算法.这样虽然提高了网络吞吐量,但是实时性却降低了,在一些交互性很强的应用程序来说是不允许的,使用TCP_NODELAY选项可以禁止Nagl ...

随机推荐

  1. Linux学习 : 裸板调试 之 配置UART

    1.UART原理说明 发送数据时,CPU将并行数据写入UART,UART按照一定的格式在一根电线上串行发出:接收数据时,UART检测另一根电线上的信号,串行收集然后放在缓冲区中,CPU即可读取UART ...

  2. DotSpatial 删除图层要素

    //添加图层后,定义图层,并获取图层 //遍历要素,并进行删除 FeatureSet fs = null; fs = (FeatureSet) map1.Layers[0].DataSet; //要素 ...

  3. HDOJ 题目2474 String painter(区间DP)

    String painter Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  4. JQuery基础总结下

    JQuery动画与特效 show()和hide()方法可以用来显示和隐藏元素,toggle()方法用来切换显示和隐藏. $(selector).hide(speed,[callback]); $(se ...

  5. ios安装app提示【未受信任的企业级开发者】。在设置中信任此开发者

     最近在测试app,ios安装app后点击提示如下图: 解决方法: 1 点击 [设置] >[通用] >[设备管理]   2 点击企业级应用 > 信任该开发者 > 信任.设置之后 ...

  6. android优秀Github源码整理

    1.https://github.com/sd6352051/NiftyNotification 2.https://github.com/sd6352051/NiftyDialogEffects 3 ...

  7. ArcMap常用VBA

    --点坐标X VBA部分: Dim pGeo As IGeometry Set pGeo = [Shape] Dim pPoint As IPoint Set pPoint = pGeo 赋值部分: ...

  8. 【笔记】Service的使用

    一.创建Service 1.创建一个myService类,来继承Service.重写其中的方法,包括:onCreate(),onStartCommend(),onDestroy(),onBind()方 ...

  9. Java—工厂模式

    工厂模式: public interface Cookie { public abstract void run (); } public abstract class CookieFactory { ...

  10. JAVA 语法基础综合练习——学生成绩管理系统

    代码如下:package com.lovo.manager; import java.util.Scanner; /** * 学生管理 * * @author Administrator * */ p ...