C#编写聊天程序系列笔记(一)原理

原创 2013年12月03日 23:37:07

程序采用TCP协议,当然神马是TCP协议呢,大家可以自行百度之。长话短说,为了C#方便使用TCP协议,在

using System.Net.Sockets;里面使用TcpListener类简化了TCP的服务器端操作,注意是服务器端,毕竟在服务器端我们才需要监听。
我们只需要定义一个实体变量,这样就可以进行服务器操作了。
当然TcpListener有两个参数格式如下
public TcpListener(IPAddress localaddr,int port)  第一个参数表示本地的IP地址,第二个参数表示监听的端口号
当我们设置好了之后,采用start()开始侦听连接请求,如果收到连接请求,则start()对请求进行排队,继续监听是否还有下一个请求,直到调用到stop方法为止。
当然stop方法就是关闭TcpListener并停止监听。
程序中采用publi Socket AcceptSocket(),这个是一个阻塞的方法,当有客户连接的时候返回一个socket实例,这样就可以调用Send与Receive方法来发送消息
为了更加方便的传输数据,程序采用NetworkStream类来访问网络数据流。
当然前提就是创建一个NetworkStream的新实例,采用这个方法public NetworkStream(Socket socket)里面参数socket就是用来发送数据的socket刚好结合上面的AcceptSocket就可以创建数据流了。
此时接收数据采用 StreamRead,发送数据采用StreamWrite,这样就可以发送数据了。
好了,下面是程序中的部分代码,帮助更好的理解
这是直接从程序复制的,有些参数可能用不上
  • 定义参数
private TcpListener tcpListener;
        private NetworkStream[] netWorkStream;
        private StreamReader[] streamReader;
        private StreamWriter[] streamWriter;
        private Socket[] socketForClient;
        private int CurPort;
        private IPAddress CurIp;
  • 开始监听
  •  private void btnStratServer_Click(object sender, EventArgs e)
            {
                serverThread = new Thread(new ThreadStart(Listen));
                serverThread.Start();
     //           Listen();
            }
    
    
    
    
  • 必要参数赋值
  • CurIp = IPAddress.Parse(txtIP.Text);
                    CurPort = Convert.ToInt32(txtPort.Text);
                    tcpListener = new TcpListener(CurIp, CurPort);
                    //开始监听
                    tcpListener.Start();
                    listInfo.Items.Add("服务器开始启动");

    
    
    
    
  • 监听
  •  socketForClient[i] = tcpListener.AcceptSocket();

    
    
    
    
  • 创建数据流
  • netWorkStream[i] = new NetworkStream(socketForClient[i]);
                            streamReader[i] = new StreamReader(netWorkStream[i]);
                            streamWriter[i] = new StreamWriter(netWorkStream[i]);
                            recvThread = new Thread(new ParameterizedThreadStart(RecvAndSendData));
                            recvThread.Start(i);

    
    
    
    
  • 发送数据与接收数据示例
  • streamWriter[i].WriteLine("hahahahahah");
                            streamWriter[i].Flush();

    
    
    
    
  • string Pass = streamReader[i].ReadLine();
  • 好了到现在基本上流程就实现了,还有问题的话私心我,可以发给源代码研究\(^o^)/~
    
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C#如何编程在桌面创建快捷方式

软件安装完成之后基本都会在桌面生成一个快捷方式,这个功能如何实现呢????????     这个需要用到 using IWshRuntimeLibrary;     这个里面有我们需要创建快捷...

用C语言操作MySQL数据库,进行连接、插入、修改、删除等操作

  很多人用到MySQL来开发一些项目,有时为了性能,我们会直接用C语言来开发相关的模块,尤其在我们的web应用中,虽然PHP、JSP等脚本均提供了MySQL的接口,但是显然直接使用C语言具有更好的安...

C#编写聊天程序系列笔记(三)数据库加锁操作

C#操作数据库进行加锁操作

c#网络编程学习笔记02_Tcp编程(中)_简单的同步tcp聊天程序

/* 写一个同步tcp程序,功能为,客户端发送一个字符串给服务器,服务器将字符串打印,服务器再将字符串全部转化为大写字母,发送给客户端,然后客户端接受打印 */ 回忆一下编写服务端的一般步骤: 1.取...

实现记录和查看用户的系统登录和退出历史和利用C#编写的网络聊天程序

一、首先定义3个全局变量:     在登录窗体FrmLogin.cs定义3个全局变量 登录成功和退出的用户Uid (public static string Uid;) --在第三章密码修...

C#编写简单的聊天程序

【原文】http://www.cnblogs.com/JimmyZhang/archive/2008/09/07/1286299.html 【下载】 引言 这是一篇基于Socke...

孙鑫VC学习笔记:第十五讲 编写一个基于MFC对话框的聊天程序

编写一个基于MFC对话框的聊天程序: 1.新建一个基于MFC项目工程Chat 2.加载套接字库,有下面两种方法,在这里选择第二种方法,因为更方便。 方法一、使用WSAStartup()加载套...
  • lvjun93
  • lvjun93
  • 2013年01月04日 17:32
  • 712

一个用C#编写的聊天程序

  • 2014年12月23日 14:35
  • 61KB
  • 下载

C#编写的简单聊天程序

  • 2012年03月05日 22:53
  • 657KB
  • 下载

JAVA系列课程讲座二:使用Socket通信实现简单聊天通信程序(UDP方式)

​上一篇我们讲了通过TCP方式实现网络通信软件开发的原理,思路及实现,今天跟大家谈谈Socket通信中UDP方式通信的软件开发步骤及主要代码讲解,UDP实现方式实现的通信软件特点是不分客户端与服务器端...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#编写聊天程序系列笔记(一)原理
举报原因:
原因补充:

(最多只允许输入30个字)