C# Socket通信 小案例
本文将编写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通信 小案例的更多相关文章
- Scala进阶之路-Spark底层通信小案例
Scala进阶之路-Spark底层通信小案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Spark Master和worker通信过程简介 1>.Worker会向ma ...
- grpc基础讲解和golang实现grpc通信小案例
grpc简介 gRPC由google开发,是一款语言中立.平台中立.开源的远程过程调用系统 gRPC客户端和服务端可以在多种环境中运行和交互,例如用java写一个服务端,可以用go语言写客户端调用 g ...
- 基于多线程的TCP socket通信经典案例
服务器端 package com.thinkvenus.study.socket; import java.io.BufferedReader; import java.io.IOException; ...
- sparkstreaming+socket workCount 小案例
Consumer代码 import org.apache.spark.SparkConf import org.apache.spark.streaming.StreamingContext impo ...
- java学习小笔记(三.socket通信)【转】
三,socket通信1.http://blog.csdn.net/kongxx/article/details/7288896这个人写的关于socket通信不错,循序渐进式的讲解,用代码示例说明,运用 ...
- C++服务器与java进行socket通信案例
分类: [java]2012-10-08 12:03 14539人阅读 评论(46) 收藏 举报 注:本代码版权所有!!!转载时请声明源地址:http://blog.csdn.net/nuptboyz ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-完整应用例子-在线聊天室系统-下载配置
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
- Java多线程技术:实现多用户服务端Socket通信
目录 前言回顾 一.多用户服务器 二.使用线程池实现服务端多线程 1.单线程版本 2.多线程版本 三.多用户与服务端通信演示 四.多用户服务器完整代码 最后 前言回顾 在上一篇<Java多线程实 ...
- 我看不下去鸟。。。。Java和C#的socket通信真的简单吗?
这几天在博客园上看到好几个写Java和C#的socket通信的帖子.但是都为指出其中关键点. C# socket通信组件有很多,在vs 使用nuget搜索socket组件有很多类似的.本人使用的是自己 ...
随机推荐
- Uva_11361 Investigating Div-Sum Property
题目链接 题意: 在[A,B]区间内找出满足条件的数有多少个. 条件:这个数本身 能够整除K, 且各位数字之和能够整除K. 思路: 数据范围过大2^31 2^31 = 2147483648 ~ 2*1 ...
- OpenJudge_cdqz 数据结构版块小结
题目整理 Challenge 0 随机线性存储表-easy Challenge 1 链表数组-easy Challenge 2 可持久化Treap的可持久化运用-hard Challenge 3 ...
- ASP 验证、查询AD域账户信息
'''函数功能:查询域用户信息 '''参数说明:strAdmin-域管理账户:Password-域帐户密码:Domain-域服务器. ''' ''' 参考资料:http://www.experts-e ...
- 浅谈C# .Net技术面试 , 正在找工作的人一定要看看
1.引子 最近一直在负责.net(B/S方向)技术面试相关的工作,前前后后面试了不少人,但是通过率较低,大概只有20%左右:有颇多感慨. 最近也一直比较困惑,原因究竟是什么? 是我们要求太高,应聘者本 ...
- unity Character Controller 点滴
unity Character Controller 点滴 1.今天在做角色的时候,发现人物跳不起来,原来设置这个属性即可,Step Offset, 这个是台阶的高度,这个值设置的越大,人物爬的越高 ...
- 【UVALive - 3713】Astronauts (2-SAT)
题意: 有n个宇航员,按照年龄划分,年龄低于平均年龄的是年轻宇航员,而年龄大于等于平均年龄的是老练的宇航员. 现在要分配他们去A,B,C三个空间站,其中A站只有老练的宇航员才能去,而B站是只有年轻的才 ...
- 3.1日 重温JVM相关信息
1.JDK.JRE.JVM的关系: JDK是java开发的必备工具箱,JDK其中有一部分是JRE,JRE是JAVA运行环境,JVM则是JRE最核心的部分. 2.JVM的组成: JVM由4大部分组成:C ...
- 监听APP升级广播处理
当旧版本的用户升级新版本的时候需要重新设定一些值处理,这时候需要监听升级版本的广播 <receiver android:name=".OnUpgradeReceiver"&g ...
- 从 mian 函数开始一步一步分析 nginx 执行流程(一)
如不做特殊说明,本博客所使用的 nginx 源码版本是 1.0.14,[] 中是代码所在的文件! 我们先贴出 main 函数的部分代码: [core/nginx.c] int ngx_cdecl ma ...
- bzoj2002
这道题学习了一种简洁的解决一些数据结构题的方法——分块法这道题方法很多,但分块写起来只有1kb左右,非常的简洁(但不是非常的高效)首先很容易思考到一种暴力的做法,从后往前推,很容易搞出每个点会弹几次弹 ...