本文将编写2个控制台应用程序,一个是服务器端(server),一个是客户端(client),

通过server的监听,有新的client连接后,接收client发出的信息。

server代码如下:

 using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading; namespace Server
{
class Program
{
static void Main(string[] args)
{
Socket server = new Socket(
//寻址方式,InterNetwork是指IPv4的方式
AddressFamily.InterNetwork,
//套接字类型,一般都是采取stream,即流的形式
SocketType.Stream,
//通信协议,这里使用TCP
ProtocolType.Tcp
);
//绑定端口,参数是IP地址和端口号,IP地址即本机的IP地址,端口号则随便,只要不是已经被占用的即可
server.Bind(new IPEndPoint(IPAddress.Parse("192.168.1.101"), ));
//设置监听的client上限
server.Listen();
Console.WriteLine("server is listening");
//用于接收client连接的线程
Thread tAccept = new Thread(() =>
{
//使用死循环
while (true)
{
//接收
Socket client = server.Accept();
Console.WriteLine("new client is connection,ip is" + client.RemoteEndPoint);
//用于接收信息的线程
Thread tReceive = new Thread(() =>
{
while (true)
{
byte[] bs = new byte[];
//使用字节数组接收
int length = client.Receive(bs);
string str = Encoding.UTF8.GetString(bs);
Console.WriteLine(str);
}
}
);
tReceive.IsBackground = true;
tReceive.Start();
}
}
);
tAccept.IsBackground = true;
tAccept.Start();
Console.ReadKey();
}
}
}

client代码如下:

 using System;
using System.Net;
using System.Net.Sockets;
using System.Text; namespace Client
{
class Program
{
static void Main(string[] args)
{
Socket client = new Socket(
AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp
);
client.Connect(new IPEndPoint(IPAddress.Parse("192.168.1.101"), ));
while (true)
{
Console.Write("please type something:");
string str = Console.ReadLine();
if (str.Equals("quit"))
{
break;
}
byte[] bs = Encoding.UTF8.GetBytes(str);
client.Send(bs);
} //关闭通信的方式,这里不需用,因为会引发异常
//client.Close();
//client.Shutdown(SocketShutdown.Both);
Console.ReadKey();
}
}
}

运行:

1、先运行server;

2、再运行client,输入内容后,server会显示内容,输入“quit”则关闭通信连接。

完成

C# Socket通信 小案例的更多相关文章

  1. Scala进阶之路-Spark底层通信小案例

    Scala进阶之路-Spark底层通信小案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Spark Master和worker通信过程简介 1>.Worker会向ma ...

  2. grpc基础讲解和golang实现grpc通信小案例

    grpc简介 gRPC由google开发,是一款语言中立.平台中立.开源的远程过程调用系统 gRPC客户端和服务端可以在多种环境中运行和交互,例如用java写一个服务端,可以用go语言写客户端调用 g ...

  3. 基于多线程的TCP socket通信经典案例

    服务器端 package com.thinkvenus.study.socket; import java.io.BufferedReader; import java.io.IOException; ...

  4. sparkstreaming+socket workCount 小案例

    Consumer代码 import org.apache.spark.SparkConf import org.apache.spark.streaming.StreamingContext impo ...

  5. java学习小笔记(三.socket通信)【转】

    三,socket通信1.http://blog.csdn.net/kongxx/article/details/7288896这个人写的关于socket通信不错,循序渐进式的讲解,用代码示例说明,运用 ...

  6. C++服务器与java进行socket通信案例

    分类: [java]2012-10-08 12:03 14539人阅读 评论(46) 收藏 举报 注:本代码版权所有!!!转载时请声明源地址:http://blog.csdn.net/nuptboyz ...

  7. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-完整应用例子-在线聊天室系统-下载配置

    一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...

  8. Java多线程技术:实现多用户服务端Socket通信

    目录 前言回顾 一.多用户服务器 二.使用线程池实现服务端多线程 1.单线程版本 2.多线程版本 三.多用户与服务端通信演示 四.多用户服务器完整代码 最后 前言回顾 在上一篇<Java多线程实 ...

  9. 我看不下去鸟。。。。Java和C#的socket通信真的简单吗?

    这几天在博客园上看到好几个写Java和C#的socket通信的帖子.但是都为指出其中关键点. C# socket通信组件有很多,在vs 使用nuget搜索socket组件有很多类似的.本人使用的是自己 ...

随机推荐

  1. theano中的logisticregression代码学习

    1 class LogisticRegression (object): 2 def __int__(self,...): 3 4 #定义一些与逻辑回归相关的各种函数 5 6 def method1( ...

  2. 【Tools】Apache Maven 入门篇 ( 上 )

    作者:George Ma 写这个 maven 的入门篇是因为之前在一个开发者会的动手实验中发现挺多人对于 maven 不是那么了解,所以就有了这个想法.这个入门篇分上下两篇.本文着重动手,用 mave ...

  3. 截断WM_SYSCOMMAND的SC_CLOSE命令(VC与Delphi双版本)

    WM_SYSCOMMAND - 系统命令消息,当点击最大化按钮,最小化按钮,关闭按钮等.都会收到这个消息.常用于窗口关闭时提示用户处理.WPARAM - 具体的命令,例如 关闭 SC_CLOSELPA ...

  4. xlslib安装, aclocal-1.13: command not found, 安装升级autoconf-2.65.tar.gz, automake-1.13.tar.gz两个文件

    问题1: $ make CDPATH="${ZSH_VERSION+.}:" && cd . && aclocal-1.13 -I m4 /bin/ ...

  5. android调用百度地图API

    http://blog.csdn.net/lyq8479/article/details/6384428

  6. codeforce --- 237C

    C. Primes on Interval time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  7. Linux cat命令详解

    本文主要内容源自网络,参考资料如下: 华夏名网,linux cat命令详解,http://www.sudu.cn/info/html/edu/20070101/290711.html 命令格式:cat ...

  8. PHP中Content-type的MIME类型大全说明

    <?php $mimetypes = array(         'ez' => 'application/andrew-inset', 'hqx' => 'application ...

  9. 阿里云如何添加多个网站 for Linux(绑定域名)

    我们可以通过.htaccess文件来达到一个空间帮顶多个域名的效果,即域名1访问空间上webroot下的目录1(即二级目录),域名2访问空间上webroot下的目录2,等等.二级目录名为fuli,需要 ...

  10. Java反射获取类和对象信息全解析

    反射可以解决在编译时无法预知对象和类是属于那个类的,要根据程序运行时的信息才能知道该对象和类的信息的问题. 在两个人协作开发时,你只要知道对方的类名就可以进行初步的开发了. 获取类对象 Class.f ...