资源简介
socket 实现聊天
/// <summary> /// 启动监听,轮询监听客户机请求并将客户端套接字存入转发表 /// </summary> public void StartUp() { IPAddress _ip = Dns.GetHostAddresses(Dns.GetHostName())[2];//可能有多个,此时的IP是本地IP _tcpl = new TcpListener(_ip, _port); _tcpl.Start();//开始侦听传入的连接请求。 Console.WriteLine("服务器已启动,正在监听...\n"); Console.WriteLine(string.Format("服务器IP:{0}\t端口号:{1}\n", _ip, _port)); while (true) { byte[] packetBuff = new byte[_maxPacket];// 接收数据缓冲区大小64K //AcceptSocket 是一个阻止方法,该方法返回可用于发送和接收数据的 Socket。 //如果希望避免阻止,请使用 Pending 方法来确定传入连接队列中的连接请求是否可用。 //返回的 Socket 是使用远程主机的 IP 地址和端口号初始化的。 //您可以使用 Socket 类中任何可用的 Send 和 Receive 方法与远程主机进行通信。 //------------使用 Socket 后,请确保调用其 Close 方法。如果应用程序相对简单,----------- //请考虑使用 AcceptTcpClient 方法代替 AcceptSocket 方法。 //TcpClient 提供了一些通过网络在阻止同步模式下发送和接收数据的简单方法。 Socket newClient = _tcpl.AcceptSocket();//本地TcpListener 接受新的请求 //返回的 Socket 是使用远程主机的 IP 地址和端口号初始化的 newClient.Receive(packetBuff);//将接受的远程SOCKET,将数据存入接受缓冲区 string userName = Encoding.Unicode.GetString(packetBuff).TrimEnd('\0'); //验证是否为唯一用户,有了就发送失败命令给请求客户 if (_transmit_tb.Count != 0 && _transmit_tb.ContainsKey(userName)) { newClient.Send(Encoding.Unicode.GetBytes("cmd::Failed")); continue; } else { newClient.Send(Encoding.Unicode.GetBytes("cmd::Successful")); } //将新连接加入转发表并创建线程为其服务 _transmit_tb.Add(userName, newClient); //----------------------- string svrlog = string.Format("[系统消息]新用户 {0} 在 {1} 已连接... 当前在线人数: {2}\r\n\r\n", userName, DateTime.Now, _transmit_tb.Count); Console.WriteLine(svrlog); //------------------------ Thread clientThread = new Thread(new ParameterizedThreadStart(ThreadFunc)); clientThread.Start(userName); //向所有客户机发送系统消息,说有人上线了 foreach (DictionaryEntry de in _transmit_tb) { string _clientName = de.Key as string; Socket _clientSkt = de.Value as Socket; if (!_clientName.Equals(userName)) { _clientSkt.Send(Encoding.Unicode.GetBytes(svrlog)); } } } }
代码片段和文件信息
using System;
using System.Collections;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Net.Sockets;//++++
using System.Windows.Forms;
using System.Threading;//++++
using System.Runtime.Serialization;//++++
using System.Runtime.InteropServices;//++++
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;//++++
using System.Media;//+++++
namespace EasyChat
{
public partial class chat_frm : Form
{
#region 私有字段
///
/// 当前用户名
///
private string _username = null;
///
/// 数据缓冲区大小
///
private int _maxPacket = 2048;//2K的缓冲区
//
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 183663 2008-11-17 22:56 scoket文档及实例(含有客户端和服务器端)+源码\C#.Net网络程序开发-Socket篇.pdf
文件 1003008 2008-08-23 12:41 scoket文档及实例(含有客户端和服务器端)+源码\SumatraPDF.exe
文件 761 2009-01-19 00:01 scoket文档及实例(含有客户端和服务器端)+源码\sumatrapdfprefs.dat
文件 10134 2007-06-12 16:45 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\AquaOS.ico
文件 10134 2007-06-12 16:45 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\Backup\AquaOS.ico
文件 16920 2007-06-18 23:02 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\Backup\chat_frm.cs
文件 15878 2007-06-16 20:03 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\Backup\chat_frm.Designer.cs
文件 25791 2007-06-16 20:03 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\Backup\chat_frm.resx
文件 4193 2007-06-18 22:58 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\Backup\EasyChat_Client.csproj
文件 555 2007-06-10 13:51 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\Backup\EasyChat_Client.csproj.user
文件 918 2007-06-17 20:55 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\Backup\EasyChat_Client.sln
..A..H. 40960 2008-11-17 22:55 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\Backup\EasyChat_Client.suo
文件 5152 2007-06-17 23:25 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\Backup\login_frm.cs
文件 6858 2007-06-12 15:20 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\Backup\login_frm.Designer.cs
文件 5814 2007-06-12 15:20 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\Backup\login_frm.resx
文件 471 2007-06-16 19:00 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\Backup\Program.cs
文件 1200 2007-06-09 11:58 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\Backup\Properties\AssemblyInfo.cs
文件 3228 2007-06-16 18:31 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\Backup\Properties\Resources.Designer.cs
文件 158985 2007-06-16 18:23 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\Backup\Properties\Resources.resx
文件 1091 2007-06-09 11:58 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\Backup\Properties\Settings.Designer.cs
文件 249 2007-06-09 11:58 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\Backup\Properties\Settings.settings
文件 7258 2007-06-13 22:04 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\Backup\Resources\msg.wav
文件 94252 2007-06-16 18:23 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\Backup\Resources\nudge.wav
文件 814 2007-06-12 09:42 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\Backup\TCPConnection.cs
文件 148480 2009-01-07 19:03 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\bin\Debug\EasyChat.exe
文件 48640 2009-01-07 19:03 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\bin\Debug\EasyChat.pdb
文件 5632 2005-12-08 14:51 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\bin\Debug\EasyChat.vshost.exe
文件 159744 2007-06-18 23:21 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\bin\Release\EasyChat.exe
文件 40448 2007-06-18 23:21 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\bin\Release\EasyChat.pdb
文件 5632 2005-12-08 14:51 scoket文档及实例(含有客户端和服务器端)+源码\复件 EasyChat_Client\复件 EasyChat_Client\bin\Release\EasyChat.vshost.exe
............此处省略119个文件信息
相关资源
- Visual C#.NET串口通信及测控应用典型实
- C#调用VLC 多窗体播放功能
- 198个经典C#WinForm 超赞的完整版
- C# 教程内含多个教程
- WebApi搭建简单服务器demo亲测可用
- DotNetty系列六:将服务端和客户端改为
- 分享解决vs2015调试asp.net程序出现无法
- C#版海康客户端API封装
- C#开发大全提高卷随书光盘
- C#的DNS协议完整实现代码
- C# Socket多客户端异步通信
- C# 一个完整的客户端和服务器端
- TCP多个客户端与服务端数据传输源码
- C#计算器设计
- c#异步命名管道以及demo
- FTP客户端C#实现
- 工业OPC客户端读取,并存SQL
- C#简单的服务器转发
- VS2012 C# 远程连接SQLserver数据库服务器
- C# 异步 SOCKET 服务和客户端
- FTP课程设计(服务端+客户端) 源码
- ASP.NET 服务器控件:DropDownCheckBoxList
- 远程控制服务端/客户端
- C#简易WebSocket通信(非服务器实现)
- C#AJAX
- c#学习根据日期查询星期,自动售货机
- C#开发的游戏服务器demoC/S案例,可运
- 自动从NTP服务器同步本地时间WinForm
- C#写的控制台NTP服务端以及winform的N
- 一套类moba的教学视频百度云地址
评论
共有 条评论