Is there any client server communication
hi All,
dear all. i am new to aqualogic bpm studio. right now i am opening file on the server by choosing the file from the client.
actual my need is i want to open the file on the client by choosing file on the client . Aqualogic bpm studio is using COM protocol to get open the file.
please help regarding this....
Regards,
Ram
The both alternates you are thinking over are fine. But the later one may cause some performance and memory issues.
If you want to go with the first alternate, I suggest you to develope your owen server using ServerSocket and use your own protocol for communication between client and server over the sockets. Because using HTTP protocol will slow down your entire application. It adds overhead because each request passes through the servlet container.
Similar Messages
-
Are there any Client/Server Application (using sockets) design patterns?
Hi,
The title of the post nearly says it all. I am searching for different design patterns related with the development of a client/server application. I understand that there must be any different ways on how a client/server application can be developed.
Regards,
Sim085
Disclaimer:
When I enter in the Socket forum on this site I recieve this message "Thank you for any participation in this forum. Due to a lack of relevant activity, we have decided to archive this forum on June 16, 2006. For future posts on this topic, we suggest you use the Networking forum" and I am not allowed to create a new post! However I can see posts done yesterday! All i did is add the forum in 'my forums'. Does this happen to you people as well?Hi Sim085...How are you?
So look this:
http://forum.java.sun.com/thread.jspa?threadID=5148926&tstart=75
I don�t know if is what you want...but I hope in this^^
Ok man...If you have one example for help you is better.
[ ] -
Instant Message client - server communication
Hi,
I am writing an instant message application that has central server and many connected clients. When one client writes a message to the server, the server echoes the message to all concerned clients
My server is a servlet, running on a J2EE web server. My client should run on Windows operating system and communicate with the WIN32 API.
My problem is:
The server is written in JAVA and my client should use the WIN32 API (in order to add its icon to the Windows tray for instance). How should I perform the client - server communication? What protocol/technology should I use? Should I write my client in C++ and from the server open a socket and perform HTTP requests? It looks too low level to me and not the �right� approach. Does it make sense to write my client in java and let it use JNI? And if yes, what is the preferred way of client � server communication?
Is there any good reference I can use?
ThanksThe both alternates you are thinking over are fine. But the later one may cause some performance and memory issues.
If you want to go with the first alternate, I suggest you to develope your owen server using ServerSocket and use your own protocol for communication between client and server over the sockets. Because using HTTP protocol will slow down your entire application. It adds overhead because each request passes through the servlet container. -
Cannot initialize SecurID client-server communications
Hi!
I've installed RSA/Ace Server on a machine where iPortal is running too. The path to ace server's config files is /opt/ace/data. We've configured SecurID Server Identifier Name as "Server000". We don't really know what this means, so we didn't change it.
We've also followed the troubleshooting guide found in iPortal's Admin docs (telnet the config and helper's ports), and mimmic the portal procedures. However we get exactly the same error: cannot initialize client-server communications.
We've also installed 2 Unix agents on 2 differente IP's. What kind of agents must be configured for authentication to work ?
What can be causing this ?I've experience to connect the ace server with portal server. The configuration is very simple and I think most of the setting in your portal is correct. One thing you should make sure is to config the portal server machine as a client to the ace server and it work. (In your case, it is same machine).
Clive Chan -
What is best way to secure client/server communication?
Hi all, I have a question for you. What is the best method for ensuring a secure communication through a client/server stream socket implementation?
I currently have a server that talks to several clients for various tasks. I would like to make all communication between the server and clients secure. In other words when one of my clients accepts an incoming connection I would like to verify that the server is really who they are talking with, and also that the data that is being received is indeed not tampered with.
Is SSL the correct technology to use with this? And if so, what is the general outline of steps I need to follow to get an SSL connection? I mean do I need certificates and all that stuff?
Thanks in advance for any help you may be able to provide.The more I look into SSL the more it appears it is only for web servers. My app is not web server based. Is SSL not the correct way to go on this then?
-
Use of servlet http tunneling for client server communication
Hello I am having a problem connecting a simple client applet to a server application. I can connect the two directly using sockets. However, when I try to connect the two via a servlet the input stream cannot be accessed. The application is purely for demonstration. Here is some of the source code
A servlet for http tunneling
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SocketServlet extends HttpServlet
ServletInputStream servletinput;
ServletOutputStream servletoutput;
Socket socket;
DataOutputStream dataoutput;
DataInputStream datainput;
public SocketServlet()
public void init(ServletConfig servletconfig) throws ServletException
super.init(servletconfig);
log("Socket servlet initialized.");
public void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException
try
servletinput = request.getInputStream();
socket = new Socket( InetAddress.getByName( "127.0.0.1" ), 5000 );
dataoutput = new DataOutputStream( socket.getOutputStream() );
try
byte[] inbytes = new byte[1024];
servletinput.read( inbytes );
String inmessage = new String( inbytes );
dataoutput.writeBytes( inmessage );
catch(IOException ioex)
dataoutput.flush();
datainput = new DataInputStream( socket.getInputStream() );
servletoutput = response.getOutputStream();
try
byte[] outbytes = new byte[1024];
datainput.read( outbytes );
servletoutput.write( outbytes );
catch(IOException ioex)
servletoutput.flush();
servletoutput.close();
catch(Exception ex)
// Server.java
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Server extends JFrame {
private JTextField enter;
private JTextArea display;
DataOutputStream output;
DataInputStream input;
public Server()
super( "Server" );
Container c = getContentPane();
enter = new JTextField();
enter.setEnabled( false );
c.add( enter, BorderLayout.SOUTH );
display = new JTextArea();
c.add( new JScrollPane( display ),
BorderLayout.CENTER );
setSize( 300, 150 );
show();
public void runServer()
ServerSocket server;
Socket connection;
int counter = 1;
try {
// Step 1: Create a ServerSocket.
server = new ServerSocket( 5000, 100 );
while ( true ) {
// Step 2: Wait for a connection.
display.setText( "Waiting for connection\n" );
connection = server.accept();
display.append( "Connection " + counter +
" received from: " +
connection.getInetAddress().getHostName() );
// Step 3: Get input and output streams.
output = new DataOutputStream(
connection.getOutputStream() );
input = new DataInputStream(
connection.getInputStream() );
display.append( "\nGot I/O streams\n" );
// Step 4: Process connection.
String message =
"SERVER>>> Connection successful";
output.writeBytes( message );
enter.setEnabled( true );
display.append( "\nConnected\n" );
do {
try {
byte[] mess = new byte[1024];
input.read( mess );
display.append( "\n" + message );
display.setCaretPosition(
display.getText().length() );
catch (IOException ioex )
} while ( !message.equals( "CLIENT>>> TERMINATE" ) );
// Step 5: Close connection.
display.append( "\nUser terminated connection" );
enter.setEnabled( false );
output.close();
input.close();
connection.close();
++counter;
catch ( EOFException eof ) {
System.out.println( "Client terminated connection" );
catch ( IOException io ) {
io.printStackTrace();
private void sendData( String s )
try {
output.writeBytes( "SERVER>>> " + s );
display.append( "\nSERVER>>>" + s );
catch ( IOException cnfex ) {
display.append(
"\nError writing object" );
public static void main( String args[] )
Server app = new Server();
app.addWindowListener(
new WindowAdapter() {
public void windowClosing( WindowEvent e )
System.exit( 0 );
app.runServer();
// Fig. 21.4: Client.java
// Set up a Client that will read information sent
// from a Server and display the information.
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.util.zip.*;
public class Client extends Applet implements ActionListener {
private TextField enter;
private TextArea display;
DataOutputStream output;
DataInputStream input;
private Button button, button2;
URLConnection connection;
private byte[] bytes1, bytes2;
private String message, message2;
public void init()
setLayout( new BorderLayout() );
enter = new TextField( " Enter text here " );
enter.setEnabled( false );
enter.addActionListener( this );
add( enter, BorderLayout.NORTH );
display = new TextArea( 4, 30 );
display.setEditable( false );
add( display, BorderLayout.CENTER );
button = new Button( "Connect" );
button.addActionListener( this );
add( button, BorderLayout.SOUTH );
public void runClient()
Socket client;
try {
// Step 1: Create a Socket to make connection.
display.setText( "Attempting connection\n" );
URL currentpage = getCodeBase();
String protocol = currentpage.getProtocol();
String host = currentpage.getHost();
int port = 8100;
String urlsuffix = "/servlet/SocketServlet";
URL dataurl = new URL( "http://localhost:8100/servlet/SocketServlet" );
connection = dataurl.openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestProperty("Content-type", "application/octet-stream");
connection.setUseCaches( false );
display.append( "\nConnected to: " + host );
// Step 2: Get the output streams.
output = new DataOutputStream(
connection.getOutputStream() );
display.append( "\n got output stream\n" );
// Step 3 get input connection
try
display.append( "\nAttempting to connect to input stream\n" );
input = new DataInputStream( connection.getInputStream() );
bytes1 = new byte[1024];
input.readFully( bytes1 );
display.append( "\nGot input stream\n" );
message = new String( bytes1 );
display.append( "\n" + message + "\n" );
catch ( IOException ioex )
// Step 3: Process connection.
enter.setEnabled( true );
do {
try {
bytes2 = new byte[1024];
input.readFully( bytes2 );
message2 = new String( bytes2 );
display.append( "\n" + message2 );
display.setCaretPosition(
display.getText().length() );
catch ( IOException ioex ) {
display.append(
"\nUnknown object type received" );
} while ( !message.equals( "SERVER>>> TERMINATE" ) );
// Step 4: Close connection.
display.append( "Closing connection.\n" );
output.close();
input.close();
catch (MalformedURLException mfe )
catch ( EOFException eof ) {
System.out.println( "Server terminated connection" );
catch ( IOException e ) {
e.printStackTrace();
private void sendData( String s )
try {
message = s;
output.writeBytes( "CLIENT>>> " + s );
display.append( "\nCLIENT>>>" + s );
catch ( IOException cnfex ) {
display.append(
"\nError writing object" );
public void actionPerformed( ActionEvent e )
if ( e.getActionCommand() == "Connect" )
runClient();
else
sendData( e.getActionCommand() );
public static void main(String args[])
Frame f = new Frame("Chat Client");
Client c = new Client();
c.init();
f.add("Center", c);
f.setSize(300, 150);
f.show();
the connection appears to fail at client step 3, any help is super, thanks
AidanHi,
In your client you are trying to open OutputStream even though you are not using it.
So there are two solutions here.
1. If you dont need OutputStream your code shoud look like this
try {
// Step 1: Create a Socket to make connection.
display.setText( "Attempting connection\n" );
URL currentpage = getCodeBase();
String protocol = currentpage.getProtocol();
String host = currentpage.getHost();
int port = 8100;
String urlsuffix = "/servlet/SocketServlet";
URL dataurl = new URL( "http://localhost:8100/servlet/SocketServlet" );
connection = dataurl.openConnection();
//connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestProperty("Content-type", "application/octet-stream");
connection.setUseCaches( false );
display.append( "\nConnected to: " + host );
// Step 2: Get the output streams.
//output = new DataOutputStream(
//connection.getOutputStream() );
//display.append( "\n got output stream\n" );
display.append( "\n Not interested in output stream\n" );
//Step 3 Inpustream related
// Step 4: Close connection.
display.append( "Closing connection.\n" );
//output.close();
input.close();
1. If you need OutputStream, close your OutputStream before even trying to get InputStream, your code should like this
try {
// Step 1: Create a Socket to make connection.
display.setText( "Attempting connection\n" );
URL currentpage = getCodeBase();
String protocol = currentpage.getProtocol();
String host = currentpage.getHost();
int port = 8100;
String urlsuffix = "/servlet/SocketServlet";
URL dataurl = new URL( "http://localhost:8100/servlet/SocketServlet" );
connection = dataurl.openConnection();
//connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestProperty("Content-type", "application/octet-stream");
connection.setUseCaches( false );
display.append( "\nConnected to: " + host );
// Step 2: Get the output streams.
output = new DataOutputStream(
connection.getOutputStream() );
display.append( "\n got output stream\n" );
//I'll do whateve I've to do with outputstream
//done with output stream closing
output.close();
//Step 3 Inpustream related
// Step 4: Close connection.
display.append( "Closing connection.\n" );
//output.close();
input.close();
hope this works
all the best,
Raj -
Slow Client / Server Communication
My application has a client that asks the server for data every second. The request to the server is a simple text string, such as "getDataUpdate". The reply from the server is an object (usually a collection of some sort, usually empty unless something is happening in the system). A simple TCP socket is used. Here is the creation logic:
socket = new Socket( primaryHost, serverPort);
fromServer = new ObjectInputStream(socket.getInputStream());
toServer = new PrintWriter(socket.getOutputStream(), true);
And here is the send/receive bit:
toServer.println(command);
object = fromServer.readObject();
My problem is that a single request/response cycle is taking 200ms, regardless of whether there is any data to return or not. If I run them both on the same PC, the cycle takes 0ms (as reported by calling System.currentTimeMillis).
The client actually makes 7 calls to get data in one loop, meaning that a single data update cycle is taking 1400ms. When run on the same PC, a total update cycle is 30ms. That includes all the processing by the server to get the data and the work by the client to unpack it and render it to the UI.
Both PCs are on the same subnet. Tracert shows there is no stop in between. The network is 100MB Ethernet and is barely being used. Transfering a 15MB file between the two PCs happens quickly. Ping returns in <1ms.
So I'm wondering where the delay is? Is Java really slow about getting from the app to the wire? Is receiving an object an issue?
If I can't resolve this delay, I'm going to have to do some refactoring and try to get the number of requests down to one large one containing a collection of stuff.Do not use PrintWriter with sockets. It swallows exceptions.
Try adding socket.setTcpNoDelay(true); just after creating the socket. Or, better still, don't use PrintWriter, it's not good for networking.
I'm guessing you are running into a problem where PrintWriter interacts poorly with the Nagle algorithm. The gory details in this thread: http://forums.sun.com/thread.jspa?threadID=5368768 (you can stop reading that thread after reply 42.) -
How to list IP address from client on the Server (TCP/IP CLIENT SERVER COMMUNICATION)
Excuse me,
In this project I want to ask how to add list IP from client that connect to server.
I have edited slightly the project.
'SERVER
Imports System.Net
Imports System.Net.Sockets
Imports System.Threading
Imports System.Threading.Tasks
Imports System.Reflection
Public Class ServerForm
Private _Listener As TcpListener
Private _Connections As New List(Of ConnectionInfo)
Private _ConnectionMonitor As Task
Private Sub Button_Checked(sender As System.Object, e As System.EventArgs) Handles StartStopButton.CheckedChanged
If StartStopButton.Checked Then
StartStopButton.Text = "Stop"
StartStopButton.Image = My.Resources.StopServer
_Listener = New TcpListener(IPAddress.Any, CInt(PortTextBox.Text))
_Listener.Start()
Dim monitor As New MonitorInfo(_Listener, _Connections)
ListenForClient(monitor)
_ConnectionMonitor = Task.Factory.StartNew(AddressOf DoMonitorConnections, monitor, TaskContinuationOptions.LongRunning)
Else
StartStopButton.Text = "Start:"
StartStopButton.Image = My.Resources.StartServer
CType(_ConnectionMonitor.AsyncState, MonitorInfo).Cancel = True
_Listener.Stop()
_Listener = Nothing
End If
End Sub
Private Sub PortTextBox_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles PortTextBox.Validating
Dim deltaPort As Integer
If Not Integer.TryParse(PortTextBox.Text, deltaPort) OrElse deltaPort < 1 OrElse deltaPort > 65535 Then
MessageBox.Show("Port number between 1 and 65535", "Invalid Port Number", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
PortTextBox.SelectAll()
e.Cancel = True
End If
End Sub
Private Sub ListenForClient(monitor As MonitorInfo)
Dim info As New ConnectionInfo(monitor)
_Listener.BeginAcceptTcpClient(AddressOf DoAcceptClient, info)
End Sub
Private Sub DoAcceptClient(result As IAsyncResult)
Dim monitorinfo As MonitorInfo = CType(_ConnectionMonitor.AsyncState, MonitorInfo)
If monitorinfo.Listener IsNot Nothing AndAlso Not monitorinfo.Cancel Then
Dim info As ConnectionInfo = CType(result.AsyncState, ConnectionInfo)
monitorinfo.Connections.Add(info)
info.AcceptClient(result)
ListenForClient(monitorinfo)
info.AwaitData()
Dim doUpdateConnectionCountLabel As New Action(AddressOf UpdateConnectionCountLabel)
Invoke(doUpdateConnectionCountLabel)
End If
End Sub
Private Sub DoMonitorConnections()
Dim doAppendOutput As New Action(Of String)(AddressOf AppendOutput)
Dim doUpdateConnectionCountLabel As New Action(AddressOf UpdateConnectionCountLabel)
Dim monitorInfo As MonitorInfo = CType(_ConnectionMonitor.AsyncState, MonitorInfo)
Me.Invoke(doAppendOutput, "Server Started")
Do
Dim lostCount As Integer = 0
For index As Integer = monitorInfo.Connections.Count - 1 To 0 Step -1
Dim info As ConnectionInfo = monitorInfo.Connections(index)
If info.Client.Connected Then
If info.DataQueue.Count > 0 Then
Dim messageBytes As New List(Of Byte)
While info.DataQueue.Count > 0
Dim value As Byte
If info.DataQueue.TryDequeue(value) Then
messageBytes.Add(value)
End If
End While
Me.Invoke(doAppendOutput, "Message from IP: " + System.Text.Encoding.ASCII.GetString(messageBytes.ToArray))
End If
Else
monitorInfo.Connections.Remove(info)
lostCount += 1
End If
Next
If lostCount > 0 Then
Invoke(doUpdateConnectionCountLabel)
End If
_ConnectionMonitor.Wait(1)
Loop While Not monitorInfo.Cancel
For Each info As ConnectionInfo In monitorInfo.Connections
info.Client.Close()
Next
monitorInfo.Connections.Clear()
Invoke(doUpdateConnectionCountLabel)
Me.Invoke(doAppendOutput, "Server Stoped")
End Sub
Private Sub UpdateConnectionCountLabel()
ConnectionCountLabel.Text = String.Format("{0} Connections", _Connections.Count)
End Sub
Private Sub AppendOutput(message As String)
If RichTextBox1.TextLength > 0 Then
RichTextBox1.AppendText(ControlChars.NewLine)
End If
RichTextBox1.AppendText(message)
RichTextBox1.ScrollToCaret()
End Sub
Private Sub ClearButton_Checked(sender As Object, e As EventArgs) Handles ClearButton.CheckedChanged
If ClearButton.Checked Then
RichTextBox1.Clear()
End If
End Sub
End Class
Public Class MonitorInfo
Private _listener As TcpListener
Public ReadOnly Property Listener As TcpListener
Get
Return _listener
End Get
End Property
Private _connections As List(Of ConnectionInfo)
Public ReadOnly Property Connections As List(Of ConnectionInfo)
Get
Return _connections
End Get
End Property
Public Property Cancel As Boolean
Public Sub New(tcpListener As TcpListener, connectionInfoList As List(Of ConnectionInfo))
_listener = tcpListener
_connections = connectionInfoList
End Sub
End Class
Public Class ConnectionInfo
Private _monitor As MonitorInfo
Public ReadOnly Property Monitor As MonitorInfo
Get
Return _monitor
End Get
End Property
Private _Client As TcpClient
Public ReadOnly Property Client As TcpClient
Get
Return _Client
End Get
End Property
Private _DataQueue As System.Collections.Concurrent.ConcurrentQueue(Of Byte)
Public ReadOnly Property DataQueue As System.Collections.Concurrent.ConcurrentQueue(Of Byte)
Get
Return _DataQueue
End Get
End Property
Private _Stream As NetworkStream
Public ReadOnly Property Stream As NetworkStream
Get
Return _Stream
End Get
End Property
Public Sub New(monitor As MonitorInfo)
_monitor = monitor
_DataQueue = New System.Collections.Concurrent.ConcurrentQueue(Of Byte)
End Sub
Private _LastReadLength As Integer
Public ReadOnly Property LastReadLength As Integer
Get
Return _LastReadLength
End Get
End Property
Private _Buffer(63) As Byte
Public Sub AcceptClient(result As IAsyncResult)
_Client = _monitor.Listener.EndAcceptTcpClient(result)
If _Client IsNot Nothing AndAlso _Client.Connected Then
_Stream = _Client.GetStream
End If
End Sub
Public Sub AwaitData()
_Stream.BeginRead(_Buffer, 0, _Buffer.Length, AddressOf DoReadData, Me)
End Sub
Private Sub DoReadData(result As IAsyncResult)
Dim info As ConnectionInfo = CType(result.AsyncState, ConnectionInfo)
Try
If info.Stream IsNot Nothing AndAlso info.Stream.CanRead Then
info._LastReadLength = info.Stream.EndRead(result)
For Index As Integer = 0 To _LastReadLength - 1
info._DataQueue.Enqueue(info._Buffer(Index))
Next
'info.SendMessage("Data Diterima " & info._LastReadLength & " Bytes")
info.SendMessage("reply form server: " & info._LastReadLength & " Bytes")
For Each otherInfo As ConnectionInfo In info.Monitor.Connections
If Not otherInfo Is info Then
otherInfo.SendMessage(System.Text.Encoding.ASCII.GetString(info._Buffer))
End If
Next
info.AwaitData()
Else
info.Client.Close()
End If
Catch ex As Exception
info._LastReadLength = -1
End Try
End Sub
Private Sub SendMessage(message As String)
If _Stream IsNot Nothing Then
Dim messageData() As Byte = System.Text.Encoding.ASCII.GetBytes(message)
Stream.Write(messageData, 0, messageData.Length)
End If
End Sub
End Class
'CLIENT
Imports System.Net
Imports System.Net.Sockets
Public Class ClientForm
Private _Connection As ConnectionInfo
Private _ServerAddress As IPAddress
Private Sub ClientForm_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
ValidateChildren()
End Sub
Private Sub ConnectButton_Checked(sender As Object, e As System.EventArgs) Handles ConnectButton.CheckedChanged
If ConnectButton.Checked Then
If _ServerAddress IsNot Nothing Then
ConnectButton.Text = "Disconnect"
ConnectButton.Image = My.Resources.StopServer
Try
_Connection = New ConnectionInfo(_ServerAddress, CInt(PortTextBox.Text), AddressOf InvokeAppendOutput)
_Connection.AwaitData()
Catch ex As Exception
MessageBox.Show(ex.Message, "Error Connecting to Server", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
ConnectButton.Checked = False
End Try
Else
MessageBox.Show("Invlid IP Server", "Cannt Connect to Server", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
ConnectButton.Checked = False
End If
Else
ConnectButton.Text = "Connect"
ConnectButton.Image = My.Resources.StartServer
If _Connection IsNot Nothing Then _Connection.Close()
_Connection = Nothing
End If
End Sub
Private Sub SendButton_Click(sender As System.Object, e As System.EventArgs) Handles SendButton.Click
If _Connection IsNot Nothing AndAlso _Connection.Client.Connected AndAlso _Connection.Stream IsNot Nothing Then
Dim buffer() As Byte = System.Text.Encoding.ASCII.GetBytes(InputTextBox.Text)
_Connection.Stream.Write(buffer, 0, buffer.Length)
End If
End Sub
Private Sub ServerTextBox_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles IPTextBox.Validating
_ServerAddress = Nothing
Dim remoteHost As IPHostEntry = Dns.GetHostEntry(IPTextBox.Text)
If remoteHost IsNot Nothing AndAlso remoteHost.AddressList.Length > 0 Then
For Each deltaAddress As IPAddress In remoteHost.AddressList
If deltaAddress.AddressFamily = AddressFamily.InterNetwork Then
_ServerAddress = deltaAddress
Exit For
End If
Next
End If
If _ServerAddress Is Nothing Then
MessageBox.Show("Cannot resolve Server Address", "invalid Server", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
IPTextBox.SelectAll()
e.Cancel = True
End If
End Sub
Private Sub PortTextBox_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles PortTextBox.Validating
Dim deltaPort As Integer
If Not Integer.TryParse(PortTextBox.Text, deltaPort) OrElse deltaPort < 1 OrElse deltaPort > 65535 Then
MessageBox.Show("Port number between 1 and 65535", "invalid Port number", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
PortTextBox.SelectAll()
e.Cancel = True
End If
End Sub
Private Sub InvokeAppendOutput(message As String)
Dim doAppendOutput As New Action(Of String)(AddressOf AppendOutput)
Me.Invoke(doAppendOutput, message)
End Sub
Private Sub AppendOutput(message As String)
If RichTextBox1.TextLength > 0 Then
RichTextBox1.AppendText(ControlChars.NewLine)
End If
RichTextBox1.AppendText(message)
RichTextBox1.ScrollToCaret()
End Sub
Private Sub ButtonClear_Click(sender As Object, e As EventArgs) Handles ButtonClear.Click
RichTextBox1.Clear()
InputTextBox.Clear()
End Sub
End Class
Public Class ConnectionInfo
Private _AppendMethod As Action(Of String)
Public ReadOnly Property AppendMethod As Action(Of String)
Get
Return _AppendMethod
End Get
End Property
Private _Client As TcpClient
Public ReadOnly Property Client As TcpClient
Get
Return _Client
End Get
End Property
Private _Stream As NetworkStream
Public ReadOnly Property Stream As NetworkStream
Get
Return _Stream
End Get
End Property
Private _LastReadLength As Integer
Public ReadOnly Property LastReadLength As Integer
Get
Return _LastReadLength
End Get
End Property
Private _Buffer(63) As Byte
Public Sub New(address As IPAddress, port As Integer, append As Action(Of String))
_AppendMethod = append
_Client = New TcpClient
_Client.Connect(address, port)
_Stream = _Client.GetStream
End Sub
Public Sub AwaitData()
_Stream.BeginRead(_Buffer, 0, _Buffer.Length, AddressOf DoreadData, Me)
End Sub
Public Sub Close()
If _Client IsNot Nothing Then _Client.Close()
_Client = Nothing
_Stream = Nothing
End Sub
Private Sub DoreadData(result As IAsyncResult)
Dim info As ConnectionInfo = CType(result.AsyncState, ConnectionInfo)
Try
If info._Stream IsNot Nothing AndAlso info._Stream.CanRead Then
info._LastReadLength = info._Stream.EndRead(result)
If info._LastReadLength > 0 Then
Dim message As String = System.Text.Encoding.ASCII.GetString(info._Buffer)
info._AppendMethod(message)
End If
info.AwaitData()
End If
Catch ex As Exception
info._LastReadLength = -1
info._AppendMethod(ex.Message)
End Try
End Sub
End Class
//ScreenShot server
http://prntscr[dot]com/5t1ol3
//Screenshot client
http://prntscr[dot]com/5t1odj
source: code[dot]msdn[dot]microsoft[dot]com/windowsdesktop/Simple-Multi-User-TCPIP-43cc3b44I have a similar chat application. When the user attempts to connect, instead of sending a simple string, the client sends a serialized object(xml string) with all relevant login and session information, this includes the user's IP address. Once the server
receives said information, depending on the type of TCP broadcast (a custom enumerated type) information from one user may be passed to a single user, or distributed to many users.
If it helps, here is the TCPBroadcast object I use. But in order for your server to understand it, you kind of have to build your server and client somewhat around it.
Option Strict On
Option Explicit On
Option Infer Off
Namespace TCPChat
Public Class TCPBroadcast
Public Property Message As String
Public Property BroadCastTime As DateTime
Public Property DestUser As String
Public Property OriginUser As String
Public Property PasswordHash As String
Public Property BroadcastSourceIP As String
Public Property BroadCastType As TCPBroadcastType
Public Property LoginUserName As String
Public Property FailureReason As String
Public Function XmlEncoding() As String
Dim serializer As New Xml.Serialization.XmlSerializer(GetType(TCPBroadcast))
Dim XML As String = String.Empty
Using memStream As New IO.MemoryStream
Using xmlWriter As New Xml.XmlTextWriter(memStream, System.Text.Encoding.UTF8) With _
{.Indentation = 4, .Formatting = System.Xml.Formatting.Indented}
serializer.Serialize(xmlWriter, Me)
End Using
XML = System.Text.Encoding.UTF8.GetString(memStream.ToArray)
End Using
Return XML
End Function
Public Function ToBinary() As Byte()
Return System.Text.Encoding.UTF8.GetBytes(Me.XmlEncoding)
End Function
Public Shared Function FromBinary(binary As Byte()) As DeserializationResult
Dim xml As String = System.Text.Encoding.UTF8.GetString(binary)
Return FromXML(xml)
End Function
Public Shared Function FromXML(xml As String) As DeserializationResult
Dim DeserializationResult As New DeserializationResult
DeserializationResult.Error = False
Try
Dim deserializer As New Xml.Serialization.XmlSerializer(GetType(TCPBroadcast))
Dim buffer As Byte() = System.Text.Encoding.UTF8.GetBytes(xml)
Using memStream As New IO.MemoryStream(buffer)
DeserializationResult.tcpBroadCast = CType(deserializer.Deserialize(memStream), TCPBroadcast)
End Using
Catch ex As Exception
DeserializationResult.Error = True
DeserializationResult.ErrorMessage = ex.ToString
DeserializationResult.AttemptedXML = xml
End Try
Return DeserializationResult
End Function
Public Class DeserializationResult
Public [Error] As Boolean
Public ErrorMessage As String
Public tcpBroadCast As TCPBroadcast
Public AttemptedXML As String
Sub New()
End Sub
End Class
Public Enum TCPBroadcastType
AdministrativeMessage
AuthenticationFailure
AuthenticationSuccess
ChatBroadcast
CredentialsRequest
Credentials
DisconnectedByServer
KeepAlive
PrivateMessage
ServerMessage
SystemMessage
UnableToProcessRequest
End Enum
End Class
End Namespace
“If you want something you've never had, you need to do something you've never done.”
Don't forget to mark
helpful posts and answers
! Answer an interesting question? Write a
new article
about it! My Articles
*This post does not reflect the opinion of Microsoft, or its employees. -
Help with Client/Server communication
Im working on a project for university, and one aspect of it is downloading files from a remote computer.
The majority of my project so far has been using RMI only, for browsing the remote computer, deleting files, renaming files, creating new directories and searching for files. All of this is done via a GUI client, with a server running on the server machine.
Ive now reached the part where I'll need to implement the downloading of files. I want the user to select a file from within the GUI and click download, and get it off the server.
I dont need any help with event handlers or getting the contents of the remote computer or anything of that sort.
Consider when I have the name of the file that I want to download from the client.
Im having trouble understanding how exactly its going to work. Ive seen examples of file transfer programs where the user types in the name of the file in the command line which they want to download. But my implementation will differ.
Every time the user clicks the button, I have to send to the server the name of a different file which will need to be downloaded.
I imagine in the event handler for the Download button I'll be creating a new socket and Streams for the download of the file that the user wants. But how am I to send to the client a dynamic file name each time when the user tries to download a different file?
I am a bit new at this, and Ive been searching on the forums for examples and Ive run through them, but I think my situation is a bit different.
Also, will RMI play any part in this? Or will it purely be just Socket and Streams?
I'll also develop an Upload button, but I imagine once I get the Download one going, the Upload one should be much harder.
Any ideas and help would be appreciated.Hi
I'm no RMI expert... and I did not understand your question very well....
I think you should do this procedure:
you should send a request for the file from the client to the server . then a new connection between the two machines should be made which will be used to send the file.
by using UDP you will achive it quite nicely...
//socket - is your TCP socket you already use on the client...
//out - socket's output stream
byte [] b=new String("File HelloWorld.java").getBytes();
// you should use a different way for using this rather than using strings...
out.write(b);
DatagramSocket DS=new DatagramSocket(port);
DS.recieve(packet); //the data is written into the packet...on the server side you should...
//socket - is your TCP socket you already use on the server...
//in - socket's input stream
byte [] b=new byte[256];
out.read(b);
/*Here you check what file you need to send to the client*/
DatagramSocket DS=new DatagramSocket(server_port);
byte [] data=//you should read the file and translate it into bytes and build a packet with them
DS.send(packet); //the data is in the packet...This way the server sends the required file to the client .....
I hope it will help, otherwise try being clearier so I could help you...
SIJP -
Help needed regarding the client server communication
this is regarding my networking project which at present i am doing it in java...
the project is abt establishing a server in my lab that controls all the other systems in that lab... now the problem is i have to shut down all the systems in the lab from the server on a click of a button.... this i need to do using socket programming to which i am new....
So can anyone pls send me a sample code as to how to pass a command from server to shut shut down all the systems(clients) ..i need a java program that uses sockets concept to perform the above mentioned operation...pls note i am trying to establish a linux server
regards
lalitaDear hiwa
i can use it but the constraint in my project is to use only the Socket programming due to time lacks.... i have to find a faster way to communicate between the server and the client...
can u pls help me find a solution for this via sockets...
hoping a favorable response
regards
Lalita -
Hi All
I need to communicate from one system to another system through labview. Can any one help me out of this.
Thanks
Rakesh Reddy
Solved!
Go to Solution.Hi Dennis
Firstly thanks for your response.
I need communication between two systems just like chat application using labview. Hope you got my query.
Thanks
R Rakesh Reddy -
Is there any test server to apply the command for practice
Dear,
I would like to know about the url where have an environment to make practice of Linux command as practice purpose.
thanksI grew up as a UNIX admin, then a DBA, then an apps DBA, and now an implementor. I built it myself.
download all software from edlivery.
Set up a server using Oracle Linux, a quad core processor and 16GB of RAM and at least 1TB of storage. This will cost ~$1000
That's it. -
UDP Client-Server Communication
What should I do to the following code to make it able to create a sequence of packets of pre-specified length and size? Also, by varying these parameters, it should be able to create the situation where the packets are lost due to congestion.
import java.net.*;
import java.io.*;
public class UDPServer{
public static void main(String args[]){
System.out.println("### Starting UDPServer...");
DatagramSocket aSocket = null;
try{
aSocket = new DatagramSocket(6789);
// create socket at agreed port
byte[] buffer = new byte[1000];
while(true){
DatagramPacket request = new DatagramPacket(buffer, buffer.length);
aSocket.receive(request);
DatagramPacket reply = new DatagramPacket(request.getData(), request.getLength(),
request.getAddress(), request.getPort());
System.out.println("sending reply = " + new String(reply.getData()));
aSocket.send(reply);
}catch (SocketException e){System.out.println("Socket: " + e.getMessage());
}catch (IOException e) {System.out.println("IO: " + e.getMessage());
}finally {if(aSocket != null) aSocket.close();}
import java.net.*;
import java.io.*;
public class UDPClient
public static void main(String args[])
System.out.println("=== Starting UDPClient..."); ///////
// args give message contents and destination hostname
DatagramSocket aSocket = null;
try {
aSocket = new DatagramSocket();
byte [] m = args[0].getBytes();
InetAddress aHost = InetAddress.getByName(args[1]);
int serverPort = 6789;
DatagramPacket request =
new DatagramPacket(m, args[0].length(), aHost, serverPort);
System.out.println("sending request = " + new String(request.getData()));
aSocket.send(request);
byte[] buffer = new byte[1000];
DatagramPacket reply = new DatagramPacket(buffer, buffer.length);
aSocket.receive(reply);
System.out.println("Got reply: " + new String(reply.getData()));
} catch (SocketException e) {
System.out.println("Socket: " + e.getMessage());
} catch (IOException e) { System.out.println("IO: " + e.getMessage());
} finally { if(aSocket != null) aSocket.close(); }
}DatagramPacket.
-
Hi,
We have currently built web applications which are in complience with OSGI and runs on FUSE ESB. Recently we have gone through vFabric tc server which is based on open source Apache tomcat. Is there any other server from vmware which supports OSGI and works similar to all functionalities of vFabric tc server?
I am not sure whether this is the right place to post this question. Please let me know if i have to post this question anywhere else?
Thanks,
PrathapHi Prabhat Y,
Per my understanding that you are doing the migration from SSRS 2005 to SSRS 2008 and now you are re-creating the 3500 subscriptions in the SSRS 2008, so you want to the new created subscription in SSRS 2008 will be pause and not execute at this time, right?
Generally, we have several method to pause the subscription processing, please reference to details information below:
When you created an subscription, an new Sql Server Agent job will be created too, so you can you can just uncheck the 'enabled' checkbox in the job properties as below to disable the execution of the job,you can also stop the SQL Server Agent Services
manually, all your subscriptions will stop running:
More information, Please reference to:
How to temporarily stop SSRS subscriptions
You can also disable a Shared Data Source, pause a Shared Schedule to pause the subscription processing.
Pause Report and Subscription Processing
If you still have any problem, please feel free to ask.
Regards,
Vicky Liu
Vicky Liu
TechNet Community Support -
Are there any problems with Snow Leopard Server (Xserve) and PPC Clients
Hi,
are there any problems identified yet with Snow Leopard Server, installed on a Xserve and PPC Clients running Mac OS X Tiger and Leopard?
Currently I have a Xserve Intel running Leopard Server and about 12 Mac Minis PPC running Mac OS X Tiger and Mac OS X Leopard. The Xserve serves services like DNS, OpenDirectory, Software Update Server, NetBoot, etc. All users have Home Directories stored on the Xserve.
Now I want to install Snow Leoaprd Server on the Xserve, but I wonder if there are any problems using the PPC Clients? I have read something like this on a german website.
Thanks!We've actually found that the Server 10.6.3 DVD does an amazingly smooth job of upgrading 10.5.8. We've been upgrading our production servers and nothing has gone wrong yet. Snow Leopard employs an archive and install method of upgrading which results in an install which is very close to a clean install. So it's been very convenient for us because our servers are used as Windows PDCs and it's a pain in the *** to have to re-join all PCs to the domain if we start from scratch.
Maybe you are looking for
-
IS VUDU available on Apple TV? If not, how do you recommend that Apple add it to the iTunes Store?
-
Ipod 4g goes black out while playing games
i dont know whether you guys have experinced this but my ipod 4g goes black out while playing some games. its like when im playing games half way, the ipood will auto close the app that im playing. Does this means that my ipod is having problem? Btw
-
Can I move an app from my iPhone 4 (non S) to my iPhone 5 (Non S or C)
Hello, First time on here so pardon my ignorance if this is foolish or needs clarification: I have an older iPhone 4 (non S) through Sprint that I kept as an emergency backup when I purchased my iPhone 5 last year. I keep them both organized the same
-
Zen Micro's In Stock Directly Through Creative L
All, I have just received a report that we have stock on the White and Black models of the Zen Micro. They are not on the shop page, however you can order them directly through us by calling: -800-998-000 and selecting option # I will update as avail
-
hi all, i just bought a new macbook and after i imported all of my songs from my old windows itunes library, i lost all of the dates added. i'd love to be able to import the dates along with the songs but have not found a way. please help. thanks.