C# Socket通信 小案例

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

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

server代码如下:

 1 using System;
 2 using System.Net;
 3 using System.Net.Sockets;
 4 using System.Text;
 5 using System.Threading;
 6
 7 namespace Server
 8 {
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13             Socket server = new Socket(
14                 //寻址方式,InterNetwork是指IPv4的方式
15                 AddressFamily.InterNetwork,
16                 //套接字类型,一般都是采取stream,即流的形式
17                 SocketType.Stream,
18                 //通信协议,这里使用TCP
19                 ProtocolType.Tcp
20                 );
21             //绑定端口,参数是IP地址和端口号,IP地址即本机的IP地址,端口号则随便,只要不是已经被占用的即可
22             server.Bind(new IPEndPoint(IPAddress.Parse("192.168.1.101"), 12312));
23             //设置监听的client上限
24             server.Listen(5);
25             Console.WriteLine("server is listening");
26             //用于接收client连接的线程
27             Thread tAccept = new Thread(() =>
28             {
29                 //使用死循环
30                 while (true)
31                 {
32                     //接收
33                     Socket client = server.Accept();
34                     Console.WriteLine("new client is connection,ip is" + client.RemoteEndPoint);
35                     //用于接收信息的线程
36                     Thread tReceive = new Thread(() =>
37                     {
38                         while (true)
39                         {
40                             byte[] bs = new byte[1024];
41                             //使用字节数组接收
42                             int length = client.Receive(bs);
43                             string str = Encoding.UTF8.GetString(bs);
44                             Console.WriteLine(str);
45                         }
46                     }
47                         );
48                     tReceive.IsBackground = true;
49                     tReceive.Start();
50                 }
51             }
52                 );
53             tAccept.IsBackground = true;
54             tAccept.Start();
55             Console.ReadKey();
56         }
57     }
58 }

client代码如下:

 1 using System;
 2 using System.Net;
 3 using System.Net.Sockets;
 4 using System.Text;
 5
 6 namespace Client
 7 {
 8     class Program
 9     {
10         static void Main(string[] args)
11         {
12             Socket client = new Socket(
13                 AddressFamily.InterNetwork,
14                 SocketType.Stream,
15                 ProtocolType.Tcp
16                 );
17             client.Connect(new IPEndPoint(IPAddress.Parse("192.168.1.101"), 12312));
18             while (true)
19             {
20                 Console.Write("please type something:");
21                 string str = Console.ReadLine();
22                 if (str.Equals("quit"))
23                 {
24                     break;
25                 }
26                 byte[] bs = Encoding.UTF8.GetBytes(str);
27                 client.Send(bs);
28             }
29
30             //关闭通信的方式,这里不需用,因为会引发异常
31             //client.Close();
32             //client.Shutdown(SocketShutdown.Both);
33             Console.ReadKey();
34         }
35     }
36 }

运行:

1、先运行server;

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

完成

时间: 2024-08-05 08:54:52

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

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

服务器端 package com.thinkvenus.study.socket; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; /** *

linux下的socket通信小程序分享

最近学习unix网络编程,感觉东西零零碎碎,比较混乱.因此决定整理以下,发一个小博客.一来可以与大家分享以下,二来可以总结提高一下所学的东西.话说:竹子为什么长的高,因为它喜欢总结阿--^_^ 废话不多说了,上代码.小弟半路出家,入行不深,过路大神不喜勿喷阿,嘿嘿--^_^ 程序是一个基于tcp的 C/S .简单回显功能( 声明以下,不要以为注释是英语就说我是在哪里下载的,原因是我运行程序 汉字老显示乱码,就改成蹩脚英语了 ). 首先是一个自己的库 1 #ifndef MYLIB_H 2 #de

一个简单的socket通信小demo

写了一个socket的程序,可以和本地的服务器进行通信,要先和服务器建立链接,然后发送登录信息,验证成功,就可以和服务器通信了 1 页面截图 2 点击链接服务器,可以链接服务器,服务器的ip地址为:127.0.0.1 端口为 12345: 3 点击链接服务器之后,打印信息如下 4 点击登录,会向服务器发送登录信息: iam:zhangsan, 然后会客户端会显示登录成功 5 比如输入chongqingyoudian  6 在服务器控制台就能看到客户端发送的信息 客户端代码如下 1 // 2 //

sparkstreaming+socket workCount 小案例

Consumer代码 import org.apache.spark.SparkConf import org.apache.spark.streaming.StreamingContext import org.apache.spark.streaming.Seconds import org.apache.spark.storage.StorageLevel object NetWorkStream { def main(args: Array[String]): Unit = { //创建

Socket通信入门小实例

客户端: public class Client { private int port = 8000; private String host = "localhost"; private Socket socket; public Client() throws UnknownHostException, IOException { socket = new Socket(host, port); } public void readFromUser() throws IOExcep

ROS与Arduino学习(七)小案例节点通信

ROS与Arduino学习(七)小案例节点通信 Tutorial Level:Logging日志 Next Tutorial: 原文地址:https://www.cnblogs.com/flyingjun/p/8952857.html

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

分类: [java]2012-10-08 12:03 14539人阅读 评论(46) 收藏 举报 注:本代码版权所有!!!转载时请声明源地址:http://blog.csdn.net/nuptboyzhb/article/details/8047619 你可以学习,分享,修改,教学等.但是不得用于商业目的.目前已经发现互联网上大量与本文完全相同的文章,但是却把作者信息删除的干干净净,并且据为己有,打上某培训机构的广告!实属可恶! 最新消息:项目成品连接:http://blog.csdn.net/

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

三,socket通信1.http://blog.csdn.net/kongxx/article/details/7288896这个人写的关于socket通信不错,循序渐进式的讲解,用代码示例说明,运用流和socket进行远程通讯 2.最简单的socket是一个服务端对应一个客户端 server的写法 ServerSocket server = new ServerSocket(10000); Socket socket = server.accept(); BufferedReader in =

Java系列讲座一:TCP方式Socket通信案例讲解

开发网络通信软件,如QQ,阿里旺旺等即时通讯软件时,Socket通信是必备的基础知识,今天跟大家谈谈Socket通信中TCP方式通信的软件开发步骤及主要代码讲解: 第一步:开发服务器端程序Server.java,源代码如下: package T16; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; imp