|
cool, that makes sense
Life goes very fast. Tomorrow, today is already yesterday.
|
|
|
|
|
Try both and see. I usually re-use.
|
|
|
|
|
A hi to all programming gurus
i am an amature in network programming i have written an simple program for making a client and server in c#
the cleint sends a msg and the server displays it in the listbox(lbconnections)
The Problem is that----
this application runs perfectly after being deployed and afterward when i again use it it crashes (port already bieng used error)
plz help me with this plzzzzzzzzzzzzzzzzzzzzzzzz..............
********************************coding for server*******************************************
using System;
using System.Threading;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
namespace server
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void recieve()
{
try
{
UdpClient server = new UdpClient(8080);
while (true)
{
IPEndPoint ip = new IPEndPoint(IPAddress.Any, 0);
byte[] recieved = server.Receive(ref ip);
string returndata = Encoding.ASCII.GetString(recieved);
listBox1.Items.Add(ip.Address.ToString() + " : " + returndata.ToString());
}
}
catch (SocketException ex)
{
MessageBox.Show(ex.Message);
}
}
private void Form1_Load(object sender, EventArgs e)
{
Thread server = new Thread(new ThreadStart(recieve));
server.Start();
}
}
}
***************************************CODING FOR CLIENT*********************************************
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
namespace ser_cli
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
UdpClient client = new UdpClient();
client.Connect(tbHost.Text, 8080);
byte[] send = Encoding.ASCII.GetBytes("HELLO WORLD?");
client.Send(send, send.Length);
}
}
}
|
|
|
|
|
Well, you forget to close the server port when you app shuts down.
|
|
|
|
|
hi SeMartens first of all thx for replyin
but frankly speakin i checked out ur article but cudnt catch a word can u explain me in simpler words
plzzzz....
..
help me with the solution
|
|
|
|
|
Okay, let me try.
Your server opens a socket at port 8080 with
byte[] recieved = server.Receive(ref ip);
This socket will be open all the time your program is running. You have to close this socket when your application exits.
So you have to use following instruction:
server.Close()
Regards
Sebastian
|
|
|
|
|
hey sebastian thx for ur reply
.
i tried that it still says only one usage of each socket is allowed
************************the new code for server************************************************
using System;
using System.Threading;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
namespace server
{
public partial class Form1 : Form
{
UdpClient server;
Thread thdserver;
public Form1()
{
InitializeComponent();
}
public void recieve()
{
try
{
server = new UdpClient(8080);
while (true)
{
IPEndPoint ip = new IPEndPoint(IPAddress.Any, 0);
byte[] recieved = server.Receive(ref ip);
string returndata = Encoding.ASCII.GetString(recieved);
listBox1.Items.Add(ip.Address.ToString() + " : " + returndata.ToString());
}
}
catch (SocketException ex)
{
MessageBox.Show(ex.Message);
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
//recieve();
thdserver = new Thread(new ThreadStart(recieve));
thdserver.Start();
}
private void button2_Click(object sender, EventArgs e)
{
server.Close();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
server.Close();
}
}
}
*********************the new code for client****************************************
using System;
using System.Threading;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net.Sockets;
using System.Net;
namespace ser_cli
{
public partial class Form1 : Form
{
UdpClient client = new UdpClient();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Thread th = new Thread(new ThreadStart(hear));
th.Start();
}
private void hear()
{
client.Connect(tbHost.Text, 8080);
byte[] send = Encoding.ASCII.GetBytes(textBox1.Text);
client.Send(send, send.Length);
}
private void btnStop_Click(object sender, EventArgs e)
{
client.Close();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
client.Close();
}
}
}
|
|
|
|
|
Check that every instance of the app is closed before you start a new try.
By the way, does something else is running at port 8080? Maybe Apache Tomcat or something similar? Could be that your app is in conflict with another one.
Regards
Sebastian
|
|
|
|
|
so how am i supposed to know wether the port is already occupied by some other application
and which other port can i use
|
|
|
|
|
There's a list of standard ports here, but that doesn't include ports opened by applications which don't follow standards. Your best bet is going with something unlikely, like 65535; alternatively anything over 49151 should work
|
|
|
|
|
thx i used port 8080 n its working perfectly fine thx for ur help
but now there is another problem
is it possible to use the same udpclient object for sending as well as recieving data
i mean
if i create a UDPcleint object like
void send()
{
UDPClient client = new UDPClient();
client.Connect(server, 8080);
cleint.send(nedata);
}
void recieve()
{
UDPClient client = new UDPClient();
IpEndpoint ip = new IPEndponit(server, 8080)
client.Recieve(ref ip)
....
}
void main()
{
thread thd_send = new thread(new threadStart(send));
thread thd_send = new thread(new threadStart(recieve));
}
}
|
|
|
|
|
On windows you can use the "netstat"-command. This will list all applications and the ports the occupy.
|
|
|
|
|
hey thx Sebastian ur soluion worked perfectly fine
|
|
|
|
|
you do know that error messages are not just random characters?
mostly they tell you the problem and nearly always you can throw them into google and get an answer that will fix your problem in minutes.. both apply in this case
Life goes very fast. Tomorrow, today is already yesterday.
|
|
|
|
|
hi musefan
i tried googling but cudnt find proper ans
if u cud help me with the coding then i wud be really grateful to you
thx in advance
|
|
|
|
|
Text speak dictionary...
'u'='you'
'cud'='could'
'cudnt'='couldn't or couldnt'
'thx'='thanks'
'wud'='would'
'ans'='answer'
and my personal favorite
'help me with the coding'='do it, send it to me for free, and I probably will stop trolling until I find something else I'm to lazy to research and fix'
|
|
|
|
|
I am new to C# so I've been browsing the MSDN libraries to see how to use certain classes. After reading your post, I looked for and found the description of the UdpClient class.
http://msdn.microsoft.com/en-us/library/system.net.sockets.udpclient.aspx
There are examples on that site, but specifically you need to close your server connection, as the others were telling you. So, somewhere before the user closes the program, you have to call server.Close()
I would recommend a finally block in your receive() method and closing the server there. But you would have to define server before the try block for this to work.
|
|
|
|
|
thx Mia Logan
the actual problem lies with the server itself my client sends data properly but when i comes to receving the server throws an ecxception
"the port can be used only once" this exception
i'll check out msdn documentation of UDPClient as well thx for the advice
|
|
|
|
|
Guys,
I need your help here. Appreciate any advice as I am not familiar with matrix. Everyone is asking me to use matrix.
I have a rectangle that are draw using the on_paint function.
The users can rotate or resize the rectangle.
Currently I am using the m_graphics.RotateTransform(node.Angle);
If the user DOES NOT rotate and just resize, everything is good. Just like MS Office.
But once it is resize, everything when haywire. I am not able to use the mouse coordinate to track the height and width of the rectangle.
Anyone can help?
Thanks
Daniel
|
|
|
|
|
[joke] Unfortunately, no one can be told what the Matrix is. You have to see it for yourself. [/joke]
Seriously though, what matrix are you talking about? What are you trying to emulate?
If the post was helpful, please vote!
Why won't the worm just leave me be?
|
|
|
|
|
hahaha...funny... i am talking about system.drawing.drawing2d.matrix
|
|
|
|
|
Ah. Then I'll have to retreat now and save face since I'm not one that has dabbled much in the graphics area. Someone ought to be along soon that can give you an answer that will most certainly be better than mine. You could, however, add a better description of your problem.
If the post was helpful, please vote!
Why won't the worm just leave me be?
|
|
|
|
|
hmmm... so you can resize correctly?
just the rotating you cant get working?
i think you will be best posting some of your code for the rotating of the object. Because your post does not help to identify the problem as it is.
Life goes very fast. Tomorrow, today is already yesterday.
|
|
|
|
|
This is the snipnet of the code
Rect m_rect = new Rectangle(X, Y, Width, Height);
Assuming X = 10, Y = 8 W=100 and H=200
I rotate the rectangle at point (X,Y) at 45 degree
graphics.TranslateTransform(X,Y);
graphics.RotateTransform(angle);
The rotation work perfectly. No issue with that.
Then I want to resize the rectangle by using the bottom right lower corner.
Assuming the right lower corner point is move to (450, 350)
How do i redraw the rectangle?
thanks
Dan
|
|
|
|
|
Well I assume you are doing all your drawing in a paint event?
whenever you make an alteration to an object this paint event will need to be called, you can call the Invalidate() function on a panel for example
What you basically need to do if you have not already taken this approach is to have a global collection of objects (shapes that you want to draw etc.) then you iterate though each object and draw it using its propoerties (location, size, color etc.) within the paint event
I think one issue with the method you are taking is that you are rotating/resizing the graphics object as a whole, and therefore if you have multiple objects then they will not resize/rotate as they should do
if you need to drag a corner of an object you will need to look into collision detection between the cursor and the objects in your collection.
Life goes very fast. Tomorrow, today is already yesterday.
|
|
|
|