我有一个应用程序,我为我的应用程序分发在整个公司,通过我们的Windows 2003服务器(运行IIS 6.0)向我发送数据.小文本消息通过,但包含更多数据(大约20 KB)的更大消息无法通过.
我将字节缓冲区设置为TCP客户端的缓冲区大小.我注意到我的数据正在服务器上收到; 但是,它只通过接收例程循环一次,我的大文件总是与缓冲区大小完全相同,或者是我们服务器上的8 KB.换句话说,我的代码只在服务器关闭套接字连接之前通过一个循环.
考虑到填充整个缓冲区可能存在问题,我尝试将读/写限制为仅1 KB但这只会导致我们的服务器在关闭连接之前收到1 KB后关闭套接字.
我将服务器的错误消息发送回客户端,以便我可以查看它.我从客户端收到的具体错误消息是:
"无法将数据写入传输连接:已建立的连接已被主机中的软件中止."
我更新了我的服务器应用程序,以便底层TCP Socket将使用"keep alives"这一行:
client.Client.SetSocketOption(SocketOptionLevel.Tcp, SocketOptionName.KeepAlive, true);
Run Code Online (Sandbox Code Playgroud)
现在,每当我尝试发送消息时,客户端都会收到错误:
"无法将数据写入传输连接:远程主机强制关闭现有连接."
我们的网络管理员告诉我他的内部服务器上没有防火墙或任何端口被阻止.
谷歌搜索错误,我发现帖子暗示人们试图telnet到服务器.我用他们的方向telnet到服务器,但我不知道如何做出响应:
C:> telnet欢迎使用Microsoft Telnet客户端
逃脱角色是'CTRL +]'
Microsoft Telnet> open cpapp 500正在连接到cpapp ...
这就是我得到的.我从来没有得到错误,微软的Telnet屏幕最终会改为"按任意键继续..." - 我想它超时了,但我的代码能以某种方式连接.
我已经在代码和Telnet中尝试了其他端口,包括25,80和8080.Telnet启动端口25,但我的应用程序似乎读取了第一个循环,无论我告诉它运行什么端口.
这是我在客户端上运行的代码:
int sendUsingTcp(string location) {
string result = string.Empty;
try {
using (FileStream fs = new FileStream(location, FileMode.Open, FileAccess.Read)) {
using (TcpClient client = new TcpClient(GetHostIP, CpAppDatabase.ServerPortNumber)) {
byte[] riteBuf = new byte[client.SendBufferSize];
byte[] readBuf = new byte[client.ReceiveBufferSize];
using (NetworkStream ns = client.GetStream()) …Run Code Online (Sandbox Code Playgroud) 我找到了几个如何从sql插入调用到我的SQLite数据库中获取最后插入行id的示例,但是我的脚本抛出了这个错误:
SQLiteException
Message = "SQLite error\r\nnear \")\": syntax error"
InnerException
NULL
Run Code Online (Sandbox Code Playgroud)
下面是我发送的SQL文本以及我如何使用它.显然,我误解了一些事情.有人可以帮帮我吗?
我正在尝试返回刚刚插入的ID号.
private static int Save(Dates date, SQLiteConnection con) {
// REF: http://www.sqlite.org/c3ref/last_insert_rowid.html
int result = 0;
string sql = "INSERT INTO Dates1 " +
"(ID, TaskID, Last1) " +
"VALUES " +
"((SELECT MAX(ID) FROM Dates1)+1, @TaskID, @Last); " +
"SELECT sqlite3_last_insert_rowid(sqlite3*);";
using (SQLiteCommand cmd = new SQLiteCommand(sql, con)) {
cmd.Parameters.AddWithValue(Dates.AT_TASK, date.TaskID);
cmd.Parameters.AddWithValue(Dates.AT_LAST, date.Last.ToShortDateString());
cmd.CommandText = Dates.SQL_INSERT;
try {
result = cmd.ExecuteNonQuery();
} catch (SQLiteException err) {
result …Run Code Online (Sandbox Code Playgroud) 如何将ASCII字符存储到"char"文字中?
我想用于我的特殊字符的ASCII字符是File Separator符号:
十进制:028
八进制:034
十六进制:01C
二进制:00011100
// This works in C/C++, but not C#:
static const char FS = 0x1C; // File Separator
Run Code Online (Sandbox Code Playgroud) 我正在寻找ASP.NET图像大小调整,裁剪
好图像重新调整大小,裁剪等任何人都知道请分享
感谢提前
我注意到在VS2010的工具>选项对话框中,有一节介绍如何格式化SQL:

我正在使用我们服务器上的一个非常大的存储过程,它根本没有格式化.我认为在我的项目中创建一个新的SQL文件,从存储过程中复制并粘贴文本,并让文本编辑器对所有SQL应用自动格式化会很棒.
当我调用"添加>新项"并获得该对话框时,似乎没有任何带有.sql扩展名的已安装模板.

我看到了SQL Server数据库模板,但这不是我需要的.在LINQ to SQL类是不正确的,无论是.
我需要使用什么模板来使用VS2010界面内置的自动格式?
在Visual Studio设计视图中,可以从"自定义","Web"和"系统"选项卡中选择"属性"窗格中的"表单颜色".当然,也可以使用颜色编号.
选择"系统"选项卡后,列表中的颜色取决于计算机用户在PC上设置的主题类型.
我想坚持这一点,但我需要知道如何"读入"颜色.我有"即时"创建的控件,或者经常需要在使用闪烁/闪烁技术吸引用户注意后更改颜色.
如何获取系统主题颜色列表?
大多数表单都有一个默认为"Control"的BackColor,在Windows 7下看起来像一个非常浅的灰色,运行默认的Windows 7主题.
我已经设法通过在代码中物理读取ARGB值来获取颜色,但是如果可以的话,我宁愿通过主题名称来访问颜色.
public Form1()
{
Color cControl = this.BackColor;
Console.WriteLine(cControl.Name); // there is not always a name!
}
Run Code Online (Sandbox Code Playgroud)
有谁知道我在说什么?
我有一个线程,在我们的(旧)SQL服务器上查找数据.
当数据进入时,我将信息发布到模态对话框 - 在进行所有这些处理时,用户不能也不应该做任何其他事情.模态对话框只是让他们看到我正在做某事并阻止他们同时运行另一个查询.
有时(很少)当代码调用SQL服务器时,服务器没有响应(IT将其关闭以进行维护,LAN线被切断,或者PC不在网络上)或执行查询的人时间不多了.因此,模态对话框确实有一个取消按钮.
Thread对象(System.Threading.Thread)有IsBackground=true.
当有人点击取消时,我会调用我的KillThread方法.
注意:我不能在此类中使用BackgroundWorker组件,因为它与某些Windows Mobile 5代码共享,而WM5没有BackgroundWorker.
void KillThread(Thread th) {
if (th != null) {
ManualResetEvent mre = new ManualResetEvent(false);
Thread thread1 = new Thread(
() =>
{
try {
if (th.IsAlive) {
//th.Stop();
// 'System.Threading.Thread' does not contain a definition for 'Stop'
// and no extension method 'Stop' accepting a first argument of type
// 'System.Threading.Thread' could be found (are you missing a using
// directive or an assembly reference?) …Run Code Online (Sandbox Code Playgroud) 对于我的应用程序正在运行的任何显示,Dpi点与像素如何相关?
int points;
Screen primary;
public Form1() {
InitializeComponent();
points = -1;
primary = null;
}
void OnPaint(object sender, PaintEventArgs e) {
if (points < 0) {
points = (int)(e.Graphics.DpiX / 72.0F); // There are 72 points per inch
}
if (primary == null) {
primary = Screen.PrimaryScreen;
Console.WriteLine(primary.WorkingArea.Height);
Console.WriteLine(primary.WorkingArea.Width);
Console.WriteLine(primary.BitsPerPixel);
}
}
Run Code Online (Sandbox Code Playgroud)
我现在有我需要的所有信息吗?
我可以使用以上任何信息来找出1200像素有多长吗?
有没有办法判断DataGridView列是a PRIMARY KEY还是a FOREIGN KEY?
我问的原因是因为我想将它们DataGridViewDataColumns设置为ReadOnly.
加载a之后DataTable,我可以看到类似SQL的属性,如AllowDBNull,AutoIncrement和Unique ; 但是如何判断哪些列是键?
private void GetData(string tableName, SqlConnection con) {
bool wasOpen = (con.State == ConnectionState.Open);
DataTable table = new DataTable(tableName);
string sqlText = string.Format(SQL_SELECT_COMMAND, tableName);
SqlCommand cmd = new SqlCommand(sqlText, con);
if (!wasOpen) {
con.Open();
}
table.Load(cmd.ExecuteReader());
if (!wasOpen) {
con.Close();
}
dataGridView1.DataSource = table.DefaultView;
for (int i = 0; i < table.Columns.Count; i++) {
DataColumn tblC = …Run Code Online (Sandbox Code Playgroud) 标题可能措辞错误,所以请告诉我正确的用语.
我有一个名为DAL_Base的基类,它接受泛型类型T.该类型T来自我们的Business Objects层中的许多类,并且每个类都具有相应的数据访问层.
DAL_Base接受允许我指定存储过程名称和参数的参数,用于调用选择,插入和更新记录的方法.
我目前似乎坚持的是,我似乎无法找到一种方法来实例化我的DAL_Base的新实例,它需要初始化各种变量.
部分上市:
public class DAL_Base<T> where T : IDisposable, new() {
public DAL_Base<T>() { // <= ERROR HERE
// initialize items that will be used in all derived classes
}
}
Run Code Online (Sandbox Code Playgroud)
VS2010给出的错误是:
无效的标记'('在类,结构或接口成员声明中
我试过创建没有括号的构造函数,但这也没用.
当我搜索时,我似乎能够返回的是创建我的泛型类型的实例的方法T.这很容易找到怎么做!
MSDN的C#Generics简介似乎也没有涵盖这一点.