winform做OA,在集团内部一对一聊天、传送文件和多对多聊天(群聊天),聊天记录要保存到数据库,应该是个什么样的开发思路,或者有没有简单点能看懂的例子
解决方案 »
- 对象绑定到PropertyGrid,根据属性A的设置值,控制属性B是否显示
- 如何将aspx页面转为图片!
- 急,急c#+winform下使用水晶报表数据源使用ado.net 中的DATASET,弹出登录数据库,怎么去掉那个登录的界面?
- excel2003有没有sheets数的限制
- 通过弹出窗口可以取得它是属于哪个进程吗,100分内详!
- winform 中有三个窗体,程序运行时隐藏A窗体 跳到B窗体 点击b窗体按钮时显示c窗体,但是此时a窗体又显示出来了,这种情况怎么处理,谢谢了
- **如何递归解析xml,深度可能是N级,节点要么是目录directory要么是文件File,如何递归遍历,并且修改File的属性值?
- 100分求byte[]数组转换ushort、short、uint、int类型[在线等]解决立马结贴
- 帮初学者看一段简单的代码
- freetextbox太难用了,求解决办法或者替换的控件
- 如何在c#中执行.sql脚本文件
- Access中没数据.取int和文本类型的MAX的时候有问题,请教一下.
给你点代码吧:
传文件就用文件流来操作。using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.Data.SqlClient;
using System.Threading;namespace NGN
{ class Program
{
private IPAddress hostIPAddress = IPAddress.Parse("127.0.0.1");
private IPEndPoint Server;
private Socket listeningSocket;
private Socket mySocket;
//private string receivedata="";
/***********************
*****定义const常量*****
***********************/
//无事件
private const int Event_None = 0;
//insert告警
private const int Event_DataInsert = 1;
//update告警
private const int Event_DataUpdate = 2;
[STAThread] /// <summary>
/// 发送数据
/// </summary>
public void SendData()
{
Socket sendSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint client = new IPEndPoint(hostIPAddress, 1122);
//sendSocket.Connect();
}
/// <summary>
/// 端口监听
/// </summary>
public void ReceiveData()
{
try
{
//创建接收数据的Socket
listeningSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//设置接收数据的地址
Server = new IPEndPoint(hostIPAddress, 1122);
//绑定主机端口
listeningSocket.Bind(Server);
//监听端口,设置队列数为50
listeningSocket.Listen(50);
System.Console.WriteLine("主机正在监听……");
//以同步方式从侦听,并返回第一个挂起的连接请求
//while (true)
//if (listeningSocket.Connected)
{
mySocket = listeningSocket.Accept();
Thread thread = new Thread(new ThreadStart(ThreadProc));
thread.Start();
}
}
catch (Exception e)
{
System.Console.Write(e.Message);
}
}
/// <summary>
/// 获得拨号动态分配IP地址
/// </summary>
/// <returns></returns>
private static string getIPAddress()
{
IPAddress addr = new IPAddress(Dns.GetHostByName(Dns.GetHostName()).AddressList[0].Address);
return addr.ToString();
}
/// <summary>
/// 数据接收
/// </summary>
public void ThreadProc()
{
try
{
//while (true)
{
//if (mySocket.Poll(1, SelectMode.SelectRead))
//if (listeningSocket.Connected)
{
//mySocket = listeningSocket.Accept();
if (mySocket != null && mySocket.Connected)
{
string ClientIP = getIPAddress();
System.Console.WriteLine("客户机:" + ClientIP + "连接上主机!" + " " + DateTime.Now);
//this.label5.Text = "与客户建立连接";
int i = 1;
while (true)
{
//设置接收数据缓冲区的大小
Byte[] recData = new Byte[512];
mySocket.Receive(recData);
int len = recData.Length;
//string ReceiveString = Encoding.GetEncoding("ASCII").GetString(recData);
//string ReceiveString = Encoding.GetEncoding(936).GetString(recData);
//ReceiveString = Encoding.GetEncoding("gb2312").GetString(recData);
string ReceiveString = Encoding.GetEncoding("UTF-8").GetString(recData);
//string abc = ReceiveString.Substring(0, ReceiveString.LastIndexOf('n')+1);
System.Console.WriteLine("收到客户机:" + ClientIP + "信息:" + ReceiveString.Substring(0, ReceiveString.LastIndexOf('n')+1));
System.Console.WriteLine("");
//receivedata = Encoding.ASCII.GetString(recData);
if (ReceiveString != "")
{
string sendstr = "这是接收到的第" + i + "条信息";
i++;
byte[] bs = Encoding.GetEncoding("utf-8").GetBytes(sendstr);
mySocket.Send(bs, bs.Length, 0);
ReceiveDo(ReceiveString);
}
}
}
}
}
}
catch (Exception e)
{
System.Console.Write(e.Message);
}
}
/************************
*******监听停止*********
************************/
//public void StopListen()
//{
// try
// {
// listeningSocket.Close();
// label5.Text = "主机停止了监听";
// }
// catch
// {
// MessageBox.Show("监听尚未开始");
// }
//}
/// <summary>
/// 划分字段
/// </summary>
/// <param name="ReceiveString">接收到的字符串</param>
/// <returns></returns>
public string[] ExecuteData(string ReceiveString)
{
int start = ReceiveString.IndexOf(':', 0);
int end = ReceiveString.LastIndexOf('n');
string DataString = ReceiveString.Substring(start + 1, end - start - 4);
string[] CurrentList = DataString.Split('|');
return CurrentList;
}
/// <summary>
/// 判断事件
/// </summary>
/// <param name="EventString">含有insert或update的字符串</param>
/// <returns></returns>
public int GetEvent(string EventString)
{
if (EventString.Contains("insert"))
return Event_DataInsert;
else if (EventString.Contains("update"))
return Event_DataUpdate;
else
return Event_None;
}
/// <summary>
/// 设置SQL语句
/// </summary>
/// <param name="Event">执行SQL的方法</param>
/// <param name="DataList">获得字段的数据列表</param>
/// <returns></returns>
public string SetSql(int Event, string[] DataList)
{
StringBuilder SqlBuilder = new StringBuilder();
switch (Event)
{
case Event_DataInsert:
SqlBuilder.Append("insert into NGNSever (Domain1,SubDomain,EMSName,Node,NodeAlias,Severity,AlertName,AlertType,AlertSourceType,AlertInfo2,AlertInfo4,Acknowledged,AcknowledgedTime,FirstNMSTime,LastNMSTime,Summary) values (");
SqlBuilder.Append("" + DataList[0] + ",");//Domain
SqlBuilder.Append(DataList[1] + ",");//SubDomain
SqlBuilder.Append("'" + DataList[2] + "',");//EMSName
SqlBuilder.Append("'" + DataList[3] + "',");//Node
SqlBuilder.Append("'" + DataList[4] + "',");//NodeAlias
SqlBuilder.Append("" + DataList[5] + ",");//Severity
SqlBuilder.Append("'" + DataList[6] + "',");//AlertName
SqlBuilder.Append("'" + DataList[7] + "',");//AlertType
SqlBuilder.Append("'" + DataList[8] + "',");//AlertSourceType
SqlBuilder.Append("'" + DataList[9] + "',");//AlertInfo2
SqlBuilder.Append("'" + DataList[10] + "',");//AlertInfo4
SqlBuilder.Append("'" + DataList[11] + "',");//Acknowledged
SqlBuilder.Append("'" + Convert.ToDateTime(DataList[12]) + "',");//AcknowledgedTime
SqlBuilder.Append("'" + Convert.ToDateTime(DataList[13]) + "',");//FirstNMSTime
SqlBuilder.Append("'" + Convert.ToDateTime(DataList[14]) + "',");//LastNMSTime
SqlBuilder.Append("'" + DataList[15] + "'"); //Summary
SqlBuilder.Append(")");
break;
case Event_DataUpdate:
SqlBuilder.Append("update NGNSever set ");
SqlBuilder.Append("Domain1=" + DataList[1] + ",");//Domain
SqlBuilder.Append("SubDomain=" + DataList[2] + ",");//SubDomain
SqlBuilder.Append("EMSName='" + DataList[3] + "',");//EMSName
SqlBuilder.Append("Node='" + DataList[4] + "',");//Node
SqlBuilder.Append("NodeAlias='" + DataList[5] + "',");//NodeAlias
SqlBuilder.Append("Severity='" + DataList[6] + "',");//Severity
SqlBuilder.Append("AlertName='" + DataList[7] + "',");//AlertName
SqlBuilder.Append("AlertType='" + DataList[8] + "',");//AlertType
SqlBuilder.Append("AlertSourceType='" + DataList[9] + "',");//AlertSourceType
SqlBuilder.Append("AlertInfo2='" + DataList[10] + "',");//AlertInfo2
SqlBuilder.Append("AlertInfo4='" + DataList[11] + "',");//AlertInfo4
SqlBuilder.Append("Acknowledged='" + DataList[12] + "',");//Acknowledged
SqlBuilder.Append("AcknowledgedTime='" + Convert.ToDateTime(DataList[13]) + "',");//AcknowledgedTime
SqlBuilder.Append("FirstNMSTime='" + Convert.ToDateTime(DataList[14]) + "',");//FirstNMSTime
SqlBuilder.Append("LastNMSTime='" + Convert.ToDateTime(DataList[15]) + "',");//LastNMSTime
SqlBuilder.Append("Summary='" + DataList[16] + "'");//Summary
SqlBuilder.Append("where identifier=" + DataList[0]);
break;
default:
break; }
string Sql = SqlBuilder.ToString();
//MessageBox.Show(Sql);
return Sql;
}
/// <summary>
/// 数据处理
/// </summary>
/// <param name="sql"></param>
public void DataHandle(string sql)
{
try
{
SqlConnection conn1 = new SqlConnection("user id=sa;database=.;initial catalog=NGN;");
SqlCommand cmd = new SqlCommand(sql, conn1);
conn1.Open();
cmd.ExecuteNonQuery();
conn1.Close();
}
catch (Exception e)
{
System.Console.Write(e.Message);
}
}
/// <summary>
/// 综合处理
/// </summary>
/// <param name="DataString"></param>
public void ReceiveDo(string DataString)
{
//textBox3.Text=DataString;
string[] DataList = ExecuteData(DataString);
//foreach (string data in DataList)
//{
// textBox3.AppendText(data + "\r\n");
//}
int Event = GetEvent(DataString);
string Sql = SetSql(Event, DataList);
DataHandle(Sql);
}
static void Main(string[] args)
{
Program pro = new Program();
pro.ReceiveData();
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.Data.SqlClient;namespace NGN_Client
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Control.CheckForIllegalCrossThreadCalls = false;
}
private IPAddress hostIPAddress = IPAddress.Parse("127.0.0.1");
private Socket sendSocket;
/// <summary>
/// 请求连接
/// </summary>
public void RequestConnection()
{
try
{
//创建发送数据的Socket
sendSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//设置发送数据的地址
IPEndPoint Server = new IPEndPoint(hostIPAddress, 1122);
//创建连接
sendSocket.Connect(Server);
//if (sendSocket.Connected)
{
this.label5.Text = "连接成功";
//Thread thread = new Thread(new ThreadStart(ThreadProc));
//thread.Start();
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
} }
public void ThreadProc()
{
try
{
while (true)
{
//设置接收数据缓冲区的大小
Byte[] recData = new Byte[128];
sendSocket.Receive(recData);
string DataString = Encoding.GetEncoding("utf-8").GetString(recData);
this.textBox3.AppendText(DataString+"\r\n");
}
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}
public void SendData()
{
try
{
string SendString = this.textBox4.Text;
Byte[] ByteSend = Encoding.GetEncoding("UTF-8").GetBytes(SendString);
//ByteSend = Encoding.GetEncoding("ASCII").GetBytes(SendString);
//ByteSend = Encoding.GetEncoding("gb2312").GetBytes(SendString);
sendSocket.Send(ByteSend, ByteSend.Length, 0);
}
catch
{
MessageBox.Show("连接尚未建立");
}
}
/// <summary>
/// 关闭连接
/// </summary>
public void CloseConnection()
{
try
{
sendSocket.Close();
this.label5.Text = "关闭连接";
}
catch
{
MessageBox.Show("连接尚未建立");
}
}
public void GetSQLData()
{ } private void button1_Click(object sender, EventArgs e)
{
RequestConnection();
} private void button2_Click(object sender, EventArgs e)
{
CloseConnection();
} private void button3_Click(object sender, EventArgs e)
{
SendData();
}
}
}