入门级:怎么使用C#进行套接字编程(二)
原文地址如下:
代码环境:VS2010+Win8.1企业评估版+Framework4.0
C#套接字编程由两部分组成。
1、C#服务端套接字程序
2、C#客户端套接字程序
服务端套接字编程
这里的服务端套接字程序是基于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按钮即可通信。
入门级:怎么使用C#进行套接字编程(二)的更多相关文章
- 入门级:怎么使用C#进行套接字编程(一)
翻译一篇简单的文章学习下基础,此文针对我等对socket只听说未尝试阶段的水平. How to C# Socket programming C#通过他的命名空间像System.Net和System.N ...
- Linux Socket 原始套接字编程
对于linux网络编程来说,可以简单的分为标准套接字编程和原始套接字编程,标准套接字主要就是应用层数据的传输,原始套接字则是可以获得不止是应用层的其他层不同协议的数据.与标准套接字相区别的主要是要开发 ...
- C++网络套接字编程TCP和UDP实例
原文地址:C++网络套接字编程TCP和UDP实例作者:xiaojiangjiang 1. 创建一个简单的SOCKET编程流程如下 面向有连接的套接字编程 服务器: 1) 创建套接字(so ...
- Python黑帽编程2.8 套接字编程
Python黑帽编程2.8 套接字编程 套接字编程在本系列教程中地位并不是很突出,但是我们观察网络应用,绝大多数都是基于Socket来做的,哪怕是绝大多数的木马程序也是如此.官方关于socket编程的 ...
- 探索UDP套接字编程
UDP和TCP处于同一层网络模型中,也就是运输层,基于二者之上的应用有很多,常见的基于TCP的有HTTP.Telnet等,基于UDP有DNS.NFS.SNMP等.UDP是无连接,不可靠的数据协议服务, ...
- 【Python网络编程】利用Python进行TCP、UDP套接字编程
之前实现了Java版本的TCP和UDP套接字编程的例子,于是决定结合Python的学习做一个Python版本的套接字编程实验. 流程如下: 1.一台客户机从其标准输入(键盘)读入一行字符,并通过其套接 ...
- 基本套接字编程(7) -- udp篇
1. UDP概述 UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互 ...
- 初探网络编程--TCP套接字编程演示
今天看了一下<计算机网络:自顶向下方法>,也就是计算机网络的教材的应用层一章,决定实现以下后面的Java C/S应用程序的例子,用来演示TCP和UDP套接字编程. 程序流程如下: 1.一台 ...
- linux网络环境下socket套接字编程(UDP文件传输)
今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中, ...
随机推荐
- leetcode 141
141. Linked List Cycle Given a linked list, determine if it has a cycle in it. Follow up:Can you sol ...
- 2.擦除开发板iNand中的uboot的方法
(1)在linux和android系统下,擦除uboot的方法: busybox dd if=/dev/zero of=/dev/block/mmcblk0 bs=512 seek=1 c ...
- ASP.NET 操作Cookie详解 增加,修改,删除
ASP.NET 操作Cookie详解 增加,修改,删除 Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密).定义于RFC2109.它 ...
- delphi TEdit设为下横线,类似填表格
delphi TEdit设为下横线,类似填表格效果,无需第三方控件就可以实现. 无须编写代码,只要设置一下控件属性 需要修改这些属性: BorderStyle改为bsNone BevelKind改为b ...
- 32、shiro 框架入门三
1.AuthenticationStrategy实现 //在所有Realm验证之前调用 AuthenticationInfo beforeAllAttempts( Collection<? ex ...
- 关于网站高性能中磁盘cpu以及内存对网站性能的影响
之前和同事聊天的时候,提到了这个硬件方面(包括内存,cpu,以及硬盘的存储选择),个人认为可以从这几个方面来提高底层硬件的性能,从而提高网站的整体吞吐量和速度. 一.主机: (1).CPU:决定处理的 ...
- Nginx 学习
1.Nginx编译安装 nginx依赖于pcre库,需要先安装pcre(二进制包,跟正则表达式有关),pcre-devel(头文件) configure --prefix=/usr/local/ng ...
- git免密码pull,push
执行git config --global credential.helper store
- MySQL把多个字段合并成一条记录的方法
转:http://www.111cn.net/database/mysql/71591.htm MySQL把多个字段合并成一条记录的方法 在mysql中字段合并可以使用很多函数来实现,如可以利用 GR ...
- kindeditor编辑器的使用
KindEditor是一款用Javascript编写的开源在线HTML编辑器,主要用户是让用户在网站上获得可见即可得的编辑效果,开发人员可以用 KindEditor 把传统的多行文本输入框(texta ...