即时通讯服务端
来源:互联网 发布:淘宝里的宝贝详情在哪 编辑:程序博客网 时间:2024/04/29 02:28
这是一个简单的即时通讯服务端,关键的地方我已经标注,希望做即时通讯又无从下手的朋友可以做为学习材料! 祝好运!
using System;
using System.IO;
using System.Net;
using System.Text;
using System.Net.Sockets;
using System.Threading;
namespace yjyserver
{
/// <summary>
/// 及时通讯服务器。
/// </summary>
class server
{
public static Socket socket;
public static string str;
public static Thread thread;
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
IPAddress serverip=Dns.GetHostByName(Dns.GetHostName()).AddressList[0]; //获取本机IP地址
TcpListener listener=new TcpListener(serverip,8006); //监听8006端口
listener.Start();
Console.WriteLine("服务器已经启动,等待连接.....)");
while(true) //为每一个新的客户开启一个服务线程
{
socket=listener.AcceptSocket(); //接受请求
thread=new Thread(new ThreadStart(start)); //创建客户线程
thread.Start(); //开启线程
//准备下次连接;
}
}
public static void start()
{
int port=socket.RemoteEndPoint.ToString().IndexOf(":"); //获取客户句柄中的端口号
string remoteip=socket.RemoteEndPoint.ToString().Substring(0,port); //获取客户句柄中的IP
NetworkStream ns=new NetworkStream(socket); //创建网络访问的基础数据流对象
StreamReader reader=new StreamReader(ns); //创建数据流读对象
StreamWriter writer=new StreamWriter(ns); //创建数据流写对象
string receive=reader.ReadLine();
str=receive.Substring(0,5);
switch(str)
{
case "HELLO":
writer.WriteLine("OK");
writer.Flush();
break;
case "BYBYE":
string name=receive.Substring(5,receive.Length-5);
File.Delete("C:/"+name+"IP.txt");
goto Out;
default:
goto Out;
}
if(reader.ReadLine()=="HELLO")
{
writer.WriteLine("OK");
writer.WriteLine(remoteip);
writer.Flush();
}
else
goto Out;//测试连接;
str=reader.ReadLine();*/
str=reader.ReadLine();
if(File.Exists("C:/"+str+".txt"))
{
writer.WriteLine("EXISTS");
writer.Flush();
}
else
{
writer.WriteLine("NOEXISTS");
writer.Flush();
goto Out;
}//检测用户名;
string passwd=reader.ReadLine();
StreamReader file=File.OpenText("C:/"+str+".txt");
if(file.ReadLine()==passwd)
{
writer.WriteLine("CONNECTED");
writer.Flush();
FileStream f=File.OpenWrite("C:/"+str+"IP.txt");
StreamWriter write=new StreamWriter(f);
write.WriteLine(remoteip);
write.Close();
f.Close();
}
else
{
writer.WriteLine("ERROR");
writer.Flush();
file.Close();
goto Out;
}//检测密码;
string[] logged=new string[10];
int x;
for(x=0;;x++)
{
logged[x]=file.ReadLine();
if(file.Peek()!=-1)
continue;
else
break;
}
file.Close();
int con=0;
bool exit=false;
while(reader.ReadLine()=="GET")
{
for(int y=con;y<=x;y++)
{
if(File.Exists("C:/"+logged[y]+"IP.txt"))
{
writer.WriteLine(logged[y]);
writer.Flush();
reader.ReadLine();
StreamReader r=File.OpenText("C:/"+logged[y]+"IP.txt");
writer.WriteLine(r.ReadLine());
writer.Flush();
r.Close();//关闭客户文件;*/
con=y+1;
break;
}
else
{
if(y==x)
{
exit=true;
break;
}
else
{
con=y+1;
continue;
}
}
}
if(exit==true)
break;
}
writer.WriteLine("OVER");
writer.Flush();
Out:
Console.WriteLine("退出...");
}
}
}
- 即时通讯服务端
- 即时通讯 的Java服务端开发
- c#实现简单的即时通讯(1)----服务端
- C# Winform Socket 即时通讯 (客户端+服务端)
- java开源即时通讯软件服务端openfire源码构建
- 基于 Xmpp 协议的即时通讯社交软件(客户端+服务端)
- 第四十七篇:实现 服务端 与 客户端 之间 Socket 即时通讯
- 即时通讯
- 即时通讯
- 即时通讯
- 即时通讯
- 即时通讯
- 即时通讯
- 即时通讯
- 即时通讯
- 即时通讯
- 即时通讯
- 即时通讯
- 一位老工程师的终告
- 怎样尽快让idea成为现实。。。
- 孟岩的C++培训课
- org.apache.commons.beanutils---操作javabean的工具
- 汉字的处理
- 即时通讯服务端
- 怎么在Tomcat里发布自己的程序? [转载]
- 一个民工的月帐本
- 2 c program idioms
- 最近工作
- 好想偶mm!
- Appfuse设置
- 间接调用指针所指的类成员的方法
- 胡思乱想