博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
入门级:怎么使用C#进行套接字编程(二)
阅读量:5863 次
发布时间:2019-06-19

本文共 1923 字,大约阅读时间需要 6 分钟。

原文地址如下

代码环境:VS2010+Win8.1企业评估版+Framework4.0

C#套接字编程由两部分组成。

1、

2、
服务端套接字编程

这里的服务端套接字程序是基于c#的控制台程序,实际上该程序作为一个服务端监听客户端的请求。这里我们为服务端套接字指定了端口号8888,他是C#类TcpListener的一个实例,通过该实例调用start()方法。

TcpListener serverSocket = new TcpListener(8888);serverSocket.Start();

下一步就是创建一个无限循环来监听客户端那边的请求。当服务端套接字接受来自客户端的请求的时候,他会从网络流里读取数据,也会向网络流里写入他对客户端的响应。从下面的C#程序里你会了解如何使用C#创建一个服务端套接字程序。创建一个新的控制台程序项目并将下面的源码放进项目里。

TcpListener serverSocket = new TcpListener(8888);int requestCount = 0;TcpClient clientSocket = default(TcpClient);serverSocket.Start();Console.WriteLine(" >> Server Started");clientSocket = serverSocket.AcceptTcpClient();Console.WriteLine(" >> Accept connection from client");requestCount = 0;while ((true)){	try	{		requestCount = requestCount + 1;		NetworkStream networkStream = clientSocket.GetStream();		//为什么是65536,因为ReceiveBufferSize大小是65536,设置其大小时未起到作用		//暂时就先用其默认大小		byte[] bytesFrom = new byte[65536];		networkStream.Read(bytesFrom, 0, (int)clientSocket.ReceiveBufferSize);		string dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom);		dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$"));		Console.WriteLine(" >> Data from client - " + dataFromClient);		string serverResponse = "Server response " + Convert.ToString(requestCount);		Byte[] sendBytes = Encoding.ASCII.GetBytes(serverResponse);		networkStream.Write(sendBytes, 0, sendBytes.Length);		networkStream.Flush();		Console.WriteLine(" >> " + serverResponse);	}	catch (Exception ex)	{		Console.WriteLine(ex.ToString());	}}clientSocket.Close();serverSocket.Stop();Console.WriteLine(" >> exit");Console.ReadLine();

客户端套接字编程

C#客户端套接字编程是C#套接字编程的第二部分。该客户端套接字程序是基于窗体应用程序的。客户端连接到服务端套接字程序的端口8888上,因为服务端和客户端运行在同一台机器上,所以我们给出IP地址(主机名)为127.0.0.1。

clientSocket.Connect("127.0.0.1", 8888);

当C#客户端程序启动时,他将连接服务端套接字程序并开始从网络流里读取数据和向网络流里写入数据。启动客户端程序时你会获得一个消息提示“客户端已启动”。当你按下客户端窗体底部的按钮时,他将向服务端发送一个消息并且接收来自服务端的响应。

程序使用:

先启动服务器端如图:

再启动客户端如图:

点击底部的button按钮即可通信。

转载地址:http://haunx.baihongyu.com/

你可能感兴趣的文章
Fiddler实现手机抓包——小白入门(转载csdn)
查看>>
Scrum实施日记 - 一切从零开始
查看>>
Windows中安装Emacs
查看>>
vim tab四个空格修改
查看>>
C#面向对象编程 封装 继承 多态
查看>>
一gradle创建SSM项目——依赖包
查看>>
(转载)在WinForm中使用GMap.Net地图插件
查看>>
安装xampp出错,windows找不到-n ?
查看>>
初涉c++学习笔记
查看>>
python基础之 Python os._exit() sys.exit() exit()区别
查看>>
Tomcat 改BUG之 localhost:8080 404
查看>>
UI透明欺诈
查看>>
Unix环境部署
查看>>
关于存储过程实例
查看>>
eclipse推荐字体
查看>>
mysql的几种启动方式
查看>>
java.util.ConcurrentModificationException
查看>>
站立会议第九天
查看>>
git第一次提交代码到码云
查看>>
理解爬虫原理
查看>>