本文将编写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. iOS:处理XML文件

    NSXMLParser是标准库类 Book.xml <?xml version="1.0" encoding="UTF-8"?> <!--Do ...

  2. QT获得所有系统环境变量(包括Linux和MAC的信息)

    系统环境变量还是挺重要的,除了QStandardPaths(感觉都是文档类型的变量,QT4使用QDesktopServices),更有QProcessEnvironment(都是真正的系统变量): Q ...

  3. android 一个页面内 多个listview的实现

    如果很平常的两个listview组件竖直放在linearLayout布局中,结果是: 两个listview 很独立,中间似乎有个分割线,完全吧他们分离了,各自独立滚动,如果上面的listview把整个 ...

  4. LeetCode解题报告:Reorder List

    Reorder List Given a singly linked list L: L0→L1→…→Ln-1→Ln,reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… Yo ...

  5. [LeetCode#244] Shortest Word Distance II

    Problem: This is a follow up of Shortest Word Distance. The only difference is now you are given the ...

  6. 查看Mysql执行计划

    使用navicat查看mysql执行计划: 打开profile分析工具: 查看是否生效:show variable like ‘%profil%’; 查看进程:show processlist; 选择 ...

  7. 【游戏框架】Phaser

    PhaserDesktop and Mobile HTML5 game framework Phaser Examples

  8. -_-#【Markdown】

    nswbmw / N-blog 第2章 使用 Markdown Markdown 语法说明 (简体中文版)Markdown: Basics (快速入门) 这里示范了一些 Markdown 的语法, 请 ...

  9. C#操作Active Directory(AD)详解

    1. LDAP简介 LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是实现提供被称为目录服务的信息服务.目录服务是一种特殊的数据库系统,其专门 ...

  10. ACM2075_A/B

    #include<iostream> int main() { using namespace std; int i,j,count; cin>>count; while(co ...