|
Could we see some code please?
Kristian Sixhoej
"Failure is not an option" - Gene Kranz
|
|
|
|
|
this is the main BeginReceive function
the OnReceive does just server.EndReceive
server/client = new Socket(AddressFamily.InterNetwork,<br />
SocketType.Stream,<br />
ProtocolType.Tcp);<br />
<br />
<br />
server.BeginReceive(buffer, <br />
0, <br />
1024, <br />
SocketFlags.None, <br />
new AsyncCallback(OnSend), <br />
null);<br />
<br />
while in the client that sends all the info has : <br />
<br />
<br />
client.BeginSend(buffer, <br />
0, <br />
1024, <br />
SocketFlags.None, <br />
new AsyncCallback(OnSend), <br />
null);
and there is the :
<br />
for(int i=0;i<100;i++)<br />
{<br />
SendMessage();
}<br />
When i Debug in the SendMessgae() i see the Message sends
and chech in the compute next to me (Agagin in debug)
that the server has come to where :
server.BeginReceive(buffer, <br />
0, <br />
1024, <br />
SocketFlags.None, <br />
new AsyncCallback(OnReceive), <br />
null); and indid it comes and the Msg Arrives into the buffer
BUT in Exe only the last Msg is recievd
Have Fun
Never forget it
|
|
|
|
|
Try putting it in a do while loop like this:
do
{
server.BeginReceive(buffer, 0, 1024, SocketFlags.None,
new AsyncCallback(OnReceive), null);
} while (server.BeginReceive() != null);
I'm not sure if the code above will work, but try it out.
EDIT: If you know the number of messages - like you do in this case - you could do this:
for (int msg = 0; msg <= 100)
{
server.BeginReceive(buffer, 0, 1024, SocketFlags.None,
new AsyncCallback(OnReceive), null);
}
Kristian Sixhoej
"Failure is not an option" - Gene Kranz
modified on Saturday, December 08, 2007 1:18:44 PM
|
|
|
|
|
THANKS
it did'nt work
but THANKS anyway
i'll try to start from the begining
Have Fun
Never forget it
|
|
|
|
|
Hi how can i get from oledb or sql data reader data to messagebox or a Textbox ?
Can someone gimme an example.
|
|
|
|
|
Don't use the code below but:
someTextBox.Text = (string)someDataReader[0];
Really there are a lot of intermediary steps that need to be taken before something like this can be done in production code.
Need a C# Consultant? I'm available.
Happiness in intelligent people is the rarest thing I know. -- Ernest Hemingway
|
|
|
|
|
<code>
TextBox.Text = DataReader.Get.....(...);
</code>
DataReader.Get... Has : GetString(),GetInt() and so on
while the the parameter in the Get...(...) is the Column number
Have Fun
Never forget it
|
|
|
|
|
Hi how can i get from oledb or sql data reader data to messagebox or a Textbox ?
Can someone gimme an example.
|
|
|
|
|
The problem is that i have a primary key whose dbtype is Bigint i dont want to keep auto to generate the primary key in sql2000 table by code and return that value. Then when entering next record increment must be made to the previous number and inserted as a primary key
next question is if i delete any resord then how to sort the primary keys in ascending order
sas
|
|
|
|
|
@@Identity will give you the last identity from an insert statement. and SCOPE_Idendity() will give you the last value in an insert in your current scope.
Primary Keys are stored by the database in ascending order, usually, so they will always be sorted. I think what you be asking is for sequential primary keys by changing the identity_seed on a deletion. This is possible with the undocumented SQL 2000 system stored procedures but it is not recommended by MS.
Need a C# Consultant? I'm available.
Happiness in intelligent people is the rarest thing I know. -- Ernest Hemingway
|
|
|
|
|
You should create another column to satisfy your requirements of a contiguous numbering system. A primary key identifies the record and shouldn't change.
I wouldn't want to be dealing with Customer#1234 and then send an update to the database, but it turns out my Customer is now #1233 because someone deleted a record while. Customer#1234 (who is now Customer#1233) would be especially annoyed when his shipment of goods gets sent to the old Customer#1235, who is now Customer#1234. Wow. You can see what I'm getting at already!
|
|
|
|
|
I have an Array arraylist
arraylist.Sort(); sorts the array on character 0-end of each element of the array.
How do I make it sort on the 60th charaacter to the end of each element of the array.
|
|
|
|
|
You could do a bubble sort yourself, its only a few lines of code. You could even make your own little function out of it.
My current favourite word is: Bauble!
-SK Genius
|
|
|
|
|
Could you show me an example of the few lines of code.
TNX
|
|
|
|
|
Just a simple bubble sort. Say you had an array of numbers ranging from 1 - 10 in any order:
do {
bool Continue;
for(int i=0; i<array.length-1; i++) {
if(array[i] > array[i+1]) {
int temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
Continue = true;
}
}
}while(Continue);
Of course to start at 60 and go to the end, you would just start int i at 60, rather than 0. If you have something like a string in your array, the string class has methods that compare two strings, so you'd need to check those out.
EDIT:Fixed the code, stupid <
My current favourite word is: Bauble!
-SK Genius
modified on Saturday, December 08, 2007 8:39:46 AM
|
|
|
|
|
Yes it is a string. I have been able to solve the problem by writing the array to a text file unsorted.txt and then doing a DOS sort /+60 usorted.txt > sorted.txt and reading the file back into the array but thats really messy.
I will try to implement your suggestion
TNX
|
|
|
|
|
Write a comparer for the object you are storing int the array. Several of the .NET list objects will take, as a parameter to sort, the comparer to use. In fact, even if you don't pass one the default comparer will likely use your version.
Need a C# Consultant? I'm available.
Happiness in intelligent people is the rarest thing I know. -- Ernest Hemingway
|
|
|
|
|
I have spent a whole day trying to write a comarer and make sence out of MSDN's convoluted instructions but have not been able to get something that compiles and works.
|
|
|
|
|
public class Foo : Comparer<foo> {
private string mMyString = new string('c', 100);
public override int Compare(Foo one, Foo two) {
return one.mMyString.Substring(59).CompareTo(two.mMyString.Substring(59));
}
}
Use System.Collections.Generic.List<foo> as the list.
Also, you may have to vary the code in the Compare method as I did not bother to test it.
Need a C# Consultant? I'm available.
Happiness in intelligent people is the rarest thing I know. -- Ernest Hemingway
|
|
|
|
|
A comparer is pretty simple. It's just a class with a Compare method that works like any other Compare method (like string.Compare for example).
Try this:
class SubstringComparer : IComparer<string> {
private int _offset, _len;
public SubstringComparer(int offset, int len) { _offset = offset; _len = len; }
public override int Compare(string x, string y) {
return string.Compare(x, _offset, y, _offset, _len);
}
}
Array.Sort(myArray, new SubstringComparer(59, int.MaxValue));
modified on Saturday, December 08, 2007 2:31:24 PM
|
|
|
|
|
This is my code that will not compile.
<br />
<br />
<br />
class SubstringComparer : IComparer<string> <br />
{ <br />
private int _offset, _len; <br />
public SubstringComparer(int offset, int len) <br />
{ <br />
_offset = offset; _len = len; <br />
} <br />
public override int Compare(string x, string y) <br />
{ <br />
return string.Compare(x, _offset, y, _offset, _len); <br />
}<br />
}<br />
<br />
private void button13_Click(object sender, EventArgs e)<br />
{<br />
ArrayList arraylist = new ArrayList();<br />
for (int i = 0; i < listBox1.Items.Count; i++)<br />
{<br />
string temp = listBox1.Items[i].ToString();<br />
if (temp.Length>65)<br />
{<br />
arraylist.Add(temp);<br />
}<br />
}<br />
Array.Sort(arraylist, new SubstringComparer(59, int.MaxValue));<br />
listBox1.Items.Clear();<br />
for (int i = 0; i < arraylist.Count; i++)<br />
listBox1.Items.Add(arraylist[i]);<br />
}<br />
}<br />
TNX for the help
modified on Saturday, December 08, 2007 10:45:32 AM
|
|
|
|
|
Hi George,
there are basically two ways (old and new):
1.
if you want to sort an ArrayList in a special way, you need to create an object
that implements IComparer (without < string> ) and knows how to compare
two items. Its signature MUST be public int Compare(object obj1, object obj2)
There is no override, by writing ": Icomparer" you promise to implement the formentioned method.
And you need to cast the arguments to strings explicitly, as in:
string str1=(string)obj1
2.
Starting with .NET 2.0 you can also use generic collections.
The code Guffa showed you is fine if you keep the strings in a generic list, that is
a List< string> . In that case you inherit
from IComparer< string> and your Compare method takes string
arguments directly, but still there is no override involved.
The generics stuff basically makes all the castings redundant.
Regards,
|
|
|
|
|
Is it possible that my problem is associated with the fact that I am using .NET 3.5 and Visual 2008.
|
|
|
|
|
Hi George,
I don't know for sure about 3.5/2008 since I haven't used them yet.
but there are some problems in the code you posted, as I pointed out before.
For one you should drop the "override" then choose either an ArrayList (1. in
my earlier reply) or List< string> (2) and make your Compare accordingly.
|
|
|
|
|
I haven't investigated to see if there are any new 'features' in this regard - but Generic Lists, IComparer and IComparable definately function as before and none of the 'normal' methods have changed in VS2008/.NET3.5
To be honest, so far I've had no problems coding exactly the same as I did with 2005 with all classes/interfaces etc.
|
|
|
|