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组件有很多类似的.本人使用的是自己 ...
随机推荐
- iOS:处理XML文件
NSXMLParser是标准库类 Book.xml <?xml version="1.0" encoding="UTF-8"?> <!--Do ...
- QT获得所有系统环境变量(包括Linux和MAC的信息)
系统环境变量还是挺重要的,除了QStandardPaths(感觉都是文档类型的变量,QT4使用QDesktopServices),更有QProcessEnvironment(都是真正的系统变量): Q ...
- android 一个页面内 多个listview的实现
如果很平常的两个listview组件竖直放在linearLayout布局中,结果是: 两个listview 很独立,中间似乎有个分割线,完全吧他们分离了,各自独立滚动,如果上面的listview把整个 ...
- 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 ...
- [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 ...
- 查看Mysql执行计划
使用navicat查看mysql执行计划: 打开profile分析工具: 查看是否生效:show variable like ‘%profil%’; 查看进程:show processlist; 选择 ...
- 【游戏框架】Phaser
PhaserDesktop and Mobile HTML5 game framework Phaser Examples
- -_-#【Markdown】
nswbmw / N-blog 第2章 使用 Markdown Markdown 语法说明 (简体中文版)Markdown: Basics (快速入门) 这里示范了一些 Markdown 的语法, 请 ...
- C#操作Active Directory(AD)详解
1. LDAP简介 LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是实现提供被称为目录服务的信息服务.目录服务是一种特殊的数据库系统,其专门 ...
- ACM2075_A/B
#include<iostream> int main() { using namespace std; int i,j,count; cin>>count; while(co ...