Data socket communication protocol
I am using the Data Socket protocol to communicate between two computers. And it works great. But the customer is asking for names and functions of the signals. I have looked at the NI website and I haven't found anything that explains what happens between the data sockets. I basically need to know what they are sending back and forth between each other. Can someone please help me with this?
Regards
Hi B@front,
DataSockets use quite a few protocols behind the scenes. Here is a link that talks about the protocols:
http://zone.ni.com/devzone/cda/tut/p/id/3224
When you say "names and functions of signals" is he asking for the protocols?
Brian K.
Similar Messages
-
Data Socket Servers with LV RT
I am trying to use LV RT on an embedded system to communicate with another system that is running LV RT. I would like to use data socket communications in order to keep the code as simple as possible. My question is if anyone has had experience with launching a data socket server on a LV RT platform. Currently I am only aware of windows machines that can be data socket servers. Any guidance would be greatly appreciated. Thank you.
DavidHi David,
I think this link can be of interest for you.
When my feet touch the ground each morning the devil thinks "bloody hell... He's up again!" -
Default Timeout on Data Socket
In my application, I am communicating with a PLC thru RS Linx utilizing a data socket. I can successfully open the socket, write the value and update using the following:
DS_Open with DSConst_Write option
DS_SetDataValue and then DS_Update
For robustness, I want to be able to alert the operator if the ethernet cable attaching the PC to PLC is unplugged, most likely or some other portion of the process has failed, less likely once setup.
I do have a solution to the above, but what I have found is that if during the execution of my program I disconnect the cable, DS_Update does give me an error indicating that sometheing is wrong, but my code hangs the thread for an indeterminate amount of time at least 1 second either through the execution of the DS_SetDataValue cmd or DS_Update. Both commands don't have a timeout associated with them, but is there some default timeout that is used.
As a work around, my thought is that I if available I could use feedback from a callback if fast enough which can detect when a network cable has been disconnected to avoid this indeterminate timeout by avoiding any set or update commands when the cable is not connected.Hi testguy,
Have you tried some of the other data socket functions? DS_IsConnected or DS_GetStatus may be able to tell the status of the connection a little faster; you could run one of those before the DS_Update so it doesn't hang. The full list of data socket functions can be seen here .
There are also some other communication protocols that do allow timeout configuration, like telnet, TCP, and UDP.
Hope this helps!
-Alexandra
National Instruments
Applications Engineer -
Problem with socket communications
I am trying to put together a client server socket communication pair.
I have one application that runs in the background acting as a server and another that can be started and stopped that acts as a client.
I can start the server and create a server socket with no problem.
I can start the client and it connects to the server.
The server acknowledges the connection and appears to go into a blocking state waiting for the client to send another message.
The server blocks at the line
parent.logit("Waiting for message from EVR..... ");
The problem is that when the client sends another message, the server doesn't hear it.
I am not sure if the problem is with the client or server communication code.
If anyone out there is a socket communication guru, I would appreciate it if you could tell me what I am doing wrong.
Thanks
Server code:
import java.io.*;
import java.net.*;
public class EVRServer
extends Thread
EVRDataLoader parent = null;
ServerSocket serverSock = null;
Socket clientSock = null;
BufferedReader reader = null;
BufferedWriter writer = null;
int evrPort = 0;
int retryLimit = 10;
int retryCount = 0;
boolean alive = false;
boolean killSocket = false;
boolean evrConnected = false;
boolean retry = true;
EVRListener evrListener = null;
//=============================================================================
// Full constructor
//=============================================================================
* Full constructor.
* @param dl DataLoader - Parent application
* @param port int Socket port
public EVRServer(EVRDataLoader dl, int port)
parent = dl;
evrPort = port;
//=============================================================================
// Run method - Main thread executed by start() method
//=============================================================================
* Main thread executed by start() method
public void run()
while (retry)
if (retryCount > retryLimit)
retry = false;
parent.logit("Retry count = " + retryCount);
// Create new server socket connection
if (serverSock == null)
try
serverSock = new ServerSocket(evrPort);
parent.logit("Created Server Socket for EVR on port " + evrPort);
alive = true;
killSocket = false;
evrConnected = false;
catch (Exception e)
parent.logit(
"ERROR - Could not create Server socket connection for EVR: " +
e.toString());
killSocket = true;
alive = false;
// Create new client socket connection
if (clientSock == null)
try
parent.logit("Waiting for EVR to connect");
clientSock = null;
clientSock = serverSock.accept();
retryCount = 0;
evrConnected = true;
killSocket = false;
parent.logit("EVR connected on server Socket Port " + evrPort);
catch (Exception e)
parent.logit("ERROR - Error accepting EVR connection: " + e.toString());
killSocket = true;
try
reader = new BufferedReader(new InputStreamReader(
clientSock.getInputStream()));
writer = new BufferedWriter(new OutputStreamWriter(
clientSock.getOutputStream()));
parent.logit( "Created reader "+reader);
parent.logit( "Created writer "+writer);
catch (Exception e)
parent.logit(
"ERROR - creating reader or writer to EVR: " + e.toString());
killSocket = true;
int nullCount = 0;
while (killSocket == false)
try
parent.logit("Waiting for message from EVR..... ");
// sendMessage("Data Controller connected on port " + evrPort);
String s = reader.readLine();
parent.logit("EVR - Received message: " + s);
if (s != null)
parent.processEvrMessage( s);
else
sleep(1000);
nullCount++;
if (nullCount > 10)
parent.logit("Exceeded retry limit: ");
killSocket = true;
catch (Exception ex)
parent.logit("Error Reading from EVR: " + ex.toString());
killSocket = true;
parent.logit( "After while loop");
evrConnected = false;
try
retryCount++;
parent.logit("Closing EVR connection. ");
reader.close();
writer.close();
clientSock.close();
writer = null;
reader = null;
clientSock = null;
try
sleep(1000);
catch (Exception ee)
parent.logit("Error after sleep " + ee.toString());
catch (Exception e)
parent.logit("Error closing EVR server socket");
//=============================================================================
// Call this method to kill the client socket connection.
//=============================================================================
* Call this method to kill the client socket connection.
public void killConnection()
killSocket = true;
//=============================================================================
// Return RTM connected state
//=============================================================================
* Return RTM connected state
* @return boolean - Returns true if RTM is connected to server, false if not.
public boolean isRtmConnected()
return evrConnected;
//=============================================================================
// Returns state of server socket.
//=============================================================================
* Returns state of server socket.
* @return boolean - Returns true if server socket is enabled, false if not.
public boolean isServerSocketAlive()
return alive;
//=============================================================================
// Send a message to the client socket.
//=============================================================================
* Send a message to the client socket.
* @param msg String - Message to send.
* @return boolean - Returns true if message sent OK, false if not.
public boolean sendMessage(String msg)
parent.logit(" In EVR Server - Send Message - got message: " + msg);
if (evrConnected)
try
parent.logit("Sending message to EVR: " + msg);
writer.write(msg + "\n");
writer.flush();
return true;
catch (Exception e)
parent.logit("ERROR - Error sending message to EVR: " + e.toString());
return false;
else
parent.logit("EVR not connected, cannot send message: " + msg);
return false;
}Client code:
package evrsimulator;
import java.net.*;
import java.io.*;
class PortConnector
extends Thread
ServerSocket serverSock = null;
boolean isIP = false;
InetAddress addr = null;
Frame1 parent = null;
byte[] rawIP;
// String initialMsg = "";
public PortConnector( Frame1 f )
parent = f;
// This method is called when the thread runs
public void run()
if ( parent.hostName.indexOf( "." ) > 0 )
isIP = true;
byte[] rawIP = parent.getRawIP( parent.hostName );
try
System.out.println( "Connecting to host " +
parent.hostName + " on port " +
parent.socketPort );
if ( isIP )
addr = InetAddress.getByAddress( rawIP );
else
addr = InetAddress.getByName( parent.hostName );
System.out.println( "Inet address = " + addr );
SocketAddress sockaddr =
new InetSocketAddress( addr, parent.socketPort );
// Create an unbound socket
parent.client = new Socket();
// This method will block no more than timeoutMs.
// If the timeout occurs, SocketTimeoutException is thrown.
parent.client.connect( sockaddr, parent.socketTimeOut );
parent.socketOut =
new BufferedWriter( new OutputStreamWriter(
parent.client.getOutputStream() ) );
parent.socketIn = new BufferedReader( new InputStreamReader(
parent.client.getInputStream() ) );
parent.localName = parent.localName +
parent.client;
System.out.println( "Parent socketOut = "+parent.socketOut);
System.out.println( "Parent socketIn = "+parent.socketIn);
catch ( UnknownHostException uhe )
System.out.println( "Unknown Host - " + uhe.getMessage() );
catch ( SocketTimeoutException ste )
System.out.println( "Socket time out - " + ste.getMessage());
catch ( IOException ioe )
System.out.println( "IO exception - " + ioe.getMessage() );
// Listen on socket for message from host - thread should block.
parent.portConnected = true;
while ( parent.portConnected )
try
String msg = parent.socketIn.readLine();
System.out.println( "Message from Host: " + msg );
System.out.println( "Message from Host: |" + msg + "|" );
if( msg.length() > 2)parent.processMessage( msg );
catch ( IOException ioe )
System.out.println( "Exception creating server socket." );
try
System.out.println(
"PortConnection - Closing socket and IO connections" );
parent.socketIn.close();
parent.socketOut.close();
parent.client.close();
parent.clockRunning = false;
if( parent.heartBeating) heartBeat.interrupt();
catch ( IOException ioex )
System.out.println( "Exception closing socket." );
}Your first problem is that you keep closing and recreating the ServerSocket. Do this once only in the lifetime of the server.
This is such a basic error that I haven't read the rest of the code. Before you go any further I suggest you read the Custom Networking trail of the Java Tutorial. -
Socket communication failure between Java applet and C++ application
I have a java applet that connects to a C++ application via Java's ServerSocket and Socket objects. THe C++ application is using the Winsock 2 API. The applet and application are running on an NT workstation (SP 6) and using IE (5.5) For a very simple C++ test applications the communictions work fine. Once more code gets added to the C++ application the portion of the socket that C++ listens to seems to close. Upon performing a recv call the return value is a zero. Microsoft insists this is a sign the Java side has shut down the socket. The Java applet can still receive messages from the C++ app but C++ cannot receive responses from the Java side. Java throws no exceptions and an explicit check of the socket shows no errors. Again, what puzzles me is that it works for simple C++ applications. Are there any known conflicts between Java and C++ in this regard?
I have inlcuded the basic java code segments below.
/ run Method.
* This method is called by the Thread.start() method. This
* method is required for the implementation of the Runnable interface
* This method sets up the server side socket communication and
* contiuously loops looking for requests from a external
* socket.
* @author Chris Duke
public void run(){
// create socket connections
boolean success = false;
try {
cServerSocket = new ServerSocket(cPortID);
System.out.println("Waiting for client to connect...");
cClientSocket = cServerSocket.accept();
System.out.println("Client connected");
// Create a stream to read from the client
cInStream = new BufferedReader(new InputStreamReader(
cClientSocket.getInputStream()));
// Create a stream to write to the client
cOutStream = new PrintWriter(
cClientSocket.getOutputStream(), true);
success = true;
}catch (IOException e) {
System.out.println("CommSocket:Run - Socket Exception(1) " + e);
success = false;
// if the socket was successfully created, keep the thread running
while (success){
try{
// check socket to see if it is still available for reading
if (cInStream != null && cInStream.ready()){
// check for an incoming message
String message = ReceiveMessage();
// Send message to listeners
Event(message);
if (cInStream == null){
success = false;
System.out.println("CommSocket:Run - shutdown");
}catch (IOException e){
System.out.println("CommSocket:Run - Socket not ready exception");
break;
// SendMessage method -
* Sends a text message to a connected listener through port specified by portID
* @author Chris Duke
* @param String message - This will be the message sent out through the server
* socket's port specified by portID.
public void SendMessage(String message){
cOutStream.println(message);
if (cOutStream.checkError() == true)
System.out.println("SendMessage : Flush = Error");
else{
System.out.println("SendMessage : Flush - No Error");
}a very simple C++ test applications the communictions work fine. Once more code gets added to the C++ application the portion of the socket that C++ listens to seems to close.
This quite strongly implicates the extra code in the C++ App. The firstly thing I would try would be telnet. Try connecting to both versions of the C++ Application and manually reproducing a proper exchange.
a recv call the return value is a zero. Microsoft insists this is a sign the Java side has shut down the socket.
A correct implementation of recv should return the number of bytes received, or -1 for an error. A zero return indicates no bytes received not a socket closed/error. This sounds like FUD to me.
Are there any known conflicts between Java and C++ in this regard?
I can see no obvious faults, though the code is incomplete, I don't think it's an sockets implementation issue, at either end, it sounds more likely to be a protocol/handshaking bug in the C++ App. -
Data socket problems with LVRT 8.2
I am in the process of migrating to LV 8.2 from LV7.1.1. My system has 18 RT targets which send data to a Host PC through data socket (DS). The Host PC runs LV on Windows XP Pro. With LV7.1.1 on both host and RT targets DS works perfectly. The RT targets update the host every 500 ms.
I've taken a three-step process in the migration. First tests were done with the host migrated to LV8.2 while keeping the RTs at LV7.1.1. Result: the system worked perfect. Then I changed one RT to 8.2 keeping the rest the rest at LV7.1.1. Result: DS timed out before all the data could be sent to Host. Finally, all RTs were migrated to LVRT 8.2. Result: Only about 5 out of the 18 RTs report to the Host before DS times out. However, if only one RT target is used, i.e., the other 17 RTs are diasbled, communication is very fast. Is there a special setting that I need to make? Btw, the roughly 5 RTs that report vary randomly from test to test, i.e., there is no bias towards any particular RTs.
I am using the same source code developed under LV7.1.1, so the only changes made are the ones that take place when one opens LV7.1.1 code in LV8.2. Some VIs get converted in the process.
Any ideas?
Chatonda Mtika
Algis Corp
Vancouver, CanadaBen,
I must say I am very surprised by Nadim's email. His point, which I must say I don't agree with, was made quite clear to me yesterday during a conference call between my team and the NI team comprising Chris, Nadim, and Avinash. So I don't know what purpose this morning's email is supposed to serve. Be that as it may, I think NI has gotten it wrong here. I do not think it should be one or the other. The discussion forum is a much wider forum comprised of people with varying experiences - not just NI employees. That is precisely why I posted my problem to the forum: to tap into the vast experiences of the discussants. But when I did not get any responses after I had posted answers to Nadim's questions, I decided to make a formal service request to NI, all perfectly legal. So I was really surprised when I was being blamed for tying up NI resources on one problem. I believe the resource allocation issue should be NI's to solve, not mine. I have no way of knowing that NI had formally assigned somebody to my problem. What if nobody from NI responds, am I allowed to make a service request to NI? My feeling is that NI's logic is flawed here, assuming Nadim's views are NI's views.
Thanks,
Chatonda Mtika
Algis Corporation
Vancouver, Canada -
Socket communication very slow on Mac OS X 10.6
Hi everybody,
I'm using a socket based communication in an application and in Mac OS 10.5 everything works quick and flawless using XCode 3.1.4.
In Mac OS 10. 6, using XCode 3.2.4, I set the Mac OS X 10.6 SDK, I recompiled the app. but the responsiveness of the app is terrible slow. The GUI itself runs OK but any socket related action is painfully slow (sometimes connection timeout).
The socket communication is implemented using standard CFSocket classes.
Is this a XCode migration issue from 3.1 to 3.2 or a Mac OS 10.6 related one (I've seen lots of complains on networking issues)?
Thank you very much,
DanThank you very much for the info but why it worked (and really fast) on 10.5. I also wonder why I didn't run into TCP_NODELAY problem there ? My TCP buffer size is 1K and I'm using the same testing environment.
Of course there is much more to it than some init parameters but still, what could be so different on 10.6 ? And I tried already the sysctl.conf TCP_NODELAY setting but no effect.
This is the code (briefly):
1. CONNECT
// Create signature from ip and port
struct sockaddr_in sin; /* TCP/UDP socket address structure. */
self->m_RemoteSocketSignature = (CFSocketSignature*)malloc(sizeof(CFSocketSignature));
self->m_RemoteSocketSignature->protocolFamily = PF_INET; /* IPv4 */
self->m_RemoteSocketSignature->socketType = SOCK_STREAM; /* Stream oriented. */
self->m_RemoteSocketSignature->protocol = IPPROTO_TCP; /* TCP */
memset( &sin, 0, sizeof( sin ) );
sin.sin_len= sizeof( sin );
sin.sin_family = AF_INET; /* Address is IPv4. Use PF_xxx for protocol
description, AF_xxx for address description. */
/* sin.port and sin.addr are in network( big endian ) byte order. */
sin.sin_port = CFSwapInt16HostToBig( port );
inet_aton( [address UTF8String], &sin.sin_addr ); /* inet_aton() gives back
network order addresses from strings. */
self->m_RemoteSocketSignature->address = CFDataCreate( NULL, (UInt8 *)&sin, sizeof( sin ) );
// Connect the Write & the Read streams to the socket
CFStreamCreatePairWithPeerSocketSignature (
kCFAllocatorDefault,
m_RemoteSocketSignature,
& m_ReadStream,
& m_WriteStream
if((m_ReadStream != NULL) && (m_WriteStream != NULL))
bOpenWrite = CFWriteStreamOpen (m_WriteStream);
bOpenRead = CFReadStreamOpen (m_ReadStream);
2. RECEIVE
CFIndex iTotalBytesRead = 0;
while (true == CFReadStreamHasBytesAvailable(m_ReadStream))
char buffer[1024];
CFIndex bufferLength = 1024;
CFIndex iBytesRead = CFReadStreamRead (
m_ReadStream,
buffer,
bufferLength
// Error ?
if(iBytesRead < 0)
return iBytesRead;
// EOS ?
if(iBytesRead == 0)
return iTotalBytesRead;
iTotalBytesRead += iBytesRead;
if(string != nil)
[string appendString:[NSString stringWithCString:buffer length:(unsigned)iBytesRead]];
3. SEND
CFIndex iBytesSent = CFWriteStreamWrite (
m_WriteStream,
buffer,
bufferLength
Thanks a lot for your help,
Dan -
hello all,
i have written a small program to send a message to echo server and get back the response from the server.
it gives a error as
COULD NOT GET I/O FOR CONNECTION TO <ip address>
i am working on win nt version 4 service pack 4 installed on a home computer.
the code is as below:
import java.io.*;
import java.net.*;
public class net4a {
public static void main(String[] args) throws IOException{
Socket echoSocket = null;
DataOutputStream os = null;
DataInputStream is = null;
DataInputStream stdIn = new DataInputStream(System.in);
InetAddress host = InetAddress.getLocalHost();
try {
echoSocket = new Socket(host, 7);
os = new DataOutputStream(echoSocket.getOutputStream());
is = new DataInputStream(echoSocket.getInputStream());
} catch (UnknownHostException e) {
System.err.println("Don't know about host: " + host);
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection to: " + host);
if (echoSocket != null && os != null && is != null) {
try {
String userInput;
while ((userInput = stdIn.readLine()) != null) {
os.writeBytes(userInput);
os.writeByte('\n');
System.out.println("echo: " + is.readLine());
os.close();
is.close();
echoSocket.close();
} catch (IOException e) {
System.err.println("I/O failed on the connection to: " + host);
look forward to ur valuable tips on the same.Hello,
Long time java programmer, first time forum user.
Looks like you looking to looking to get a java applet/program communicating with a web server. This is not an extremely difficult task and I have successfully got apache communicating CGI transactions to and from an applet with no drama�s.
This is very useful as it is restrictive to have to open up extra sockets across a network as many networks today restrict socket communication often for security or business/organization policies.
An alternative is to use HTTP request using the POST command to talk to a web server with the web server replying to the request. For example, you may need to ask a database to pull out all customer names from a server-side database. The applet need only send a URLEncoded request to the server, the webserver invokes the CGI process (I use Java to handle the CGI requests but other methods/languages can be used) which returns the result of the transaction.
I have listed some code that included the a �ping-pong� request to a server. It included the applet function that calls the webserver, the CGI batch script (for win NT/XP) to invoke the java program, the cgi-lib to simply parse the URL request (many thanks to the author) and the server-side java program that responds to the request.
I hope you find this useful. The download for apache, the webserver, is available at
http://www.apache.org/
and is a pretty simple install. Make sure you fix up the httpd.conf file to suit your system.
Good luck.
Dale Miller
CLIENT-SIDE (Java Applet Snippit)
public class Comm {
private String server;
private URL toServer;
private URLConnection uRLConnection;
private DataOutputStream dataOutputStream;
private StringBuffer output;
private BufferedReader dataInputStream;
private String result;
private int resultsLast;
private String results[] = new String[100];
private int firstTU;
//this function starts in its own thread and takes care
//of logins and there re-tries, the messaging.
//Please see the actual function for better details
//private LoginWatcher loginWatcher;
public Comm(String serverAddress) throws UnsupportedEncodingException{
System.out.println("loaded Comm class!");
//First thing we need to do is set up the login watcher
//loginWatcher = new LoginWatcher();
this.output = new StringBuffer();
this.server = serverAddress;
try {
this.toServer = new URL(server + "ping.cgi");
} catch (MalformedURLException e) {
System.out.println("ERROR : in contacting the server");
System.out.println("Server : " + server);
System.out.println("NOT FOUND!!");
try {
this.uRLConnection = toServer.openConnection();
} catch (IOException e) {
System.out.println("ERROR : Connection to server refused");
this.uRLConnection.setUseCaches(false);
this.uRLConnection.setDoInput(true);
this.uRLConnection.setDoOutput(true);
this.uRLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
try {
this.dataOutputStream = new DataOutputStream(uRLConnection.getOutputStream());
} catch (IOException e) {
System.out.println("ERROR : opening dataoutputstream");
this.output.setLength(0);
output.append("first=" + URLEncoder.encode("I am", "UTF-8"));
output.append("&last=" + URLEncoder.encode("number 1", "UTF-8"));
try {
dataOutputStream.writeBytes(new String(output));
} catch (IOException e) {
System.out.println("ERROR : Sending string to cgi ping.cgi");
try {
this.dataInputStream = new BufferedReader(new InputStreamReader(uRLConnection.getInputStream()));
} catch (IOException e) {
System.out.println("ERROR : Setting up input stream");
String grab = new String();
System.out.print("Searching for server..");
try {
grab = dataInputStream.readLine();
grab = dataInputStream.readLine();
} catch (IOException e) {
System.out.println("ERROR : Reciving ping data from server");
if (grab.equals("pass")) {
System.out.println("OK");
} else {
System.out.println("ERROR\n\nSERVER NOT FOUND!!!");
System.exit(-1);
//loginWatcher.loginWatcherTh.start();
CGI BATCH TO INVOKE CGI PROGRAM
#!java -cp c:\ss\ middle
CGI-LIB TO PARSE HTTP REQUESTS
import java.util.*;
import java.io.*;
* cgi_lib.java<p>
* <p>
* Usage: This library of java functions, which I have encapsulated inside
* a class called cgi_lib as class (static) member functions,
* attempts to duplicate the standard PERL CGI library (cgi-lib.pl).
* You must invoke any Java program that uses this library from
* within a UNIX script, Windows batch file or equivalent. As you
* will see in the following example, all of the CGI environment
* variables must be passed from the script into the Java application
* using the -D option of the Java interpreter. This example
* UNIX script uses the "main" routine of this class as a
* CGI script:
* <pre>
* (testcgi.sh)
* #!/bin/sh
* java \
* -Dcgi.content_type=$CONTENT_TYPE \
* -Dcgi.content_length=$CONTENT_LENGTH \
* -Dcgi.request_method=$REQUEST_METHOD \
* -Dcgi.query_string=$QUERY_STRING \
* -Dcgi.server_name=$SERVER_NAME \
* -Dcgi.server_port=$SERVER_PORT \
* -Dcgi.script_name=$SCRIPT_NAME \
* -Dcgi.path_info=$PATH_INFO \
* cgi_lib
* </pre>
* Question and comments can be sent to [email protected].<p>
* @version 1.0
* @author Pat L. Durante
class cgi_lib
* Parse the form data passed from the browser into
* a Hashtable. The names of the input fields on the HTML form will
* be used as the keys to the Hashtable returned. If you have a form
* that contains an input field such as this,<p>
* <pre>
* <INPUT SIZE=40 TYPE="text" NAME="email" VALUE="[email protected]">
* </pre>
* then after calling this method like this,<p>
* <pre>
* Hashtable form_data = cgi_lib.ReadParse(System.in);
* </pre>
* you can access that email field as follows:<p>
* <pre>
* String email_addr = (String)form_data.get("email");
* </pre>
* @param inStream The input stream from which the form data can be read.
* (Only used if the form data was posted using the POST method. Usually,
* you will want to simply pass in System.in for this parameter.)
* @return The form data is parsed and returned in a Hashtable
* in which the keys represent the names of the input fields.
public static Hashtable ReadParse(InputStream inStream)
Hashtable form_data = new Hashtable();
String inBuffer = "";
if (MethGet())
inBuffer = System.getProperty("cgi.query_string");
else
// TODO: I should probably use the cgi.content_length property when
// reading the input stream and read only that number of
// bytes. The code below does not use the content length
// passed in through the CGI API.
DataInput d = new DataInputStream(inStream);
String line;
try
while((line = d.readLine()) != null)
inBuffer = inBuffer + line;
catch (IOException ignored) { }
// Split the name value pairs at the ampersand (&)
StringTokenizer pair_tokenizer = new StringTokenizer(inBuffer,"&");
while (pair_tokenizer.hasMoreTokens())
String pair = urlDecode(pair_tokenizer.nextToken());
// Split into key and value
StringTokenizer keyval_tokenizer = new StringTokenizer(pair,"=");
String key = new String();
String value = new String();
if (keyval_tokenizer.hasMoreTokens())
key = keyval_tokenizer.nextToken();
else ; // ERROR - shouldn't ever occur
if (keyval_tokenizer.hasMoreTokens())
value = keyval_tokenizer.nextToken();
else ; // ERROR - shouldn't ever occur
// Add key and associated value into the form_data Hashtable
form_data.put(key,value);
return form_data;
* URL decode a string.<p>
* Data passed through the CGI API is URL encoded by the browser.
* All spaces are turned into plus characters (+) and all "special"
* characters are hex escaped into a %dd format (where dd is the hex
* ASCII value that represents the original character). You probably
* won't ever need to call this routine directly; it is used by the
* ReadParse method to decode the form data.
* @param in The string you wish to decode.
* @return The decoded string.
public static String urlDecode(String in)
StringBuffer out = new StringBuffer(in.length());
int i = 0;
int j = 0;
while (i < in.length())
char ch = in.charAt(i);
i++;
if (ch == '+') ch = ' ';
else if (ch == '%')
ch = (char)Integer.parseInt(in.substring(i,i+2), 16);
i+=2;
out.append(ch);
j++;
return new String(out);
* Generate a standard HTTP HTML header.
* @return A String containing the standard HTTP HTML header.
public static String Header()
return "Content-type: text/html\n\n";
* Generate some vanilla HTML that you usually
* want to include at the top of any HTML page you generate.
* @param Title The title you want to put on the page.
* @return A String containing the top portion of an HTML file.
public static String HtmlTop(String Title)
String Top = new String();
Top = "<html>\n";
Top+= "<head>\n";
Top+= "<title>\n";
Top+= Title;
Top+= "\n";
Top+= "</title>\n";
Top+= "</head>\n";
Top+= "<body>\n";
return Top;
* Generate some vanilla HTML that you usually
* want to include at the bottom of any HTML page you generate.
* @return A String containing the bottom portion of an HTML file.
public static String HtmlBot()
return "</body>\n</html>\n";
* Determine if the REQUEST_METHOD used to
* send the data from the browser was the GET method.
* @return true, if the REQUEST_METHOD was GET. false, otherwise.
public static boolean MethGet()
String RequestMethod = System.getProperty("cgi.request_method");
boolean returnVal = false;
if (RequestMethod != null)
if (RequestMethod.equals("GET") ||
RequestMethod.equals("get"))
returnVal=true;
return returnVal;
* Determine if the REQUEST_METHOD used to
* send the data from the browser was the POST method.
* @return true, if the REQUEST_METHOD was POST. false, otherwise.
public static boolean MethPost()
String RequestMethod = System.getProperty("cgi.request_method");
boolean returnVal = false;
if (RequestMethod != null)
if (RequestMethod.equals("POST") ||
RequestMethod.equals("post"))
returnVal=true;
return returnVal;
* Determine the Base URL of this script.
* (Does not include the QUERY_STRING (if any) or PATH_INFO (if any).
* @return The Base URL of this script as a String.
public static String MyBaseURL()
String returnString = new String();
returnString = "http://" +
System.getProperty("cgi.server_name");
if (!(System.getProperty("cgi.server_port").equals("80")))
returnString += ":" + System.getProperty("cgi.server_port");
returnString += System.getProperty("cgi.script_name");
return returnString;
* Determine the Full URL of this script.
* (Includes the QUERY_STRING (if any) or PATH_INFO (if any).
* @return The Full URL of this script as a String.
public static String MyFullURL()
String returnString;
returnString = MyBaseURL();
returnString += System.getProperty("cgi.path_info");
String queryString = System.getProperty("cgi.query_string");
if (queryString.length() > 0)
returnString += "?" + queryString;
return returnString;
* Neatly format all of the CGI environment variables
* and the associated values using HTML.
* @return A String containing an HTML representation of the CGI environment
* variables and the associated values.
public static String Environment()
String returnString;
returnString = "<dl compact>\n";
returnString += "<dt><b>CONTENT_TYPE</b> <dd>:<i>" +
System.getProperty("cgi.content_type") +
"</i>:<br>\n";
returnString += "<dt><b>CONTENT_LENGTH</b> <dd>:<i>" +
System.getProperty("cgi.content_length") +
"</i>:<br>\n";
returnString += "<dt><b>REQUEST_METHOD</b> <dd>:<i>" +
System.getProperty("cgi.request_method") +
"</i>:<br>\n";
returnString += "<dt><b>QUERY_STRING</b> <dd>:<i>" +
System.getProperty("cgi.query_string") +
"</i>:<br>\n";
returnString += "<dt><b>SERVER_NAME</b> <dd>:<i>" +
System.getProperty("cgi.server_name") +
"</i>:<br>\n";
returnString += "<dt><b>SERVER_PORT</b> <dd>:<i>" +
System.getProperty("cgi.server_port") +
"</i>:<br>\n";
returnString += "<dt><b>SCRIPT_NAME</b> <dd>:<i>" +
System.getProperty("cgi.script_name") +
"</i>:<br>\n";
returnString += "<dt><b>PATH_INFO</b> <dd>:<i>" +
System.getProperty("cgi.path_info") +
"</i>:<br>\n";
returnString += "</dl>\n";
return returnString;
* Neatly format all of the form data using HTML.
* @param form_data The Hashtable containing the form data which was
* parsed using the ReadParse method.
* @return A String containing an HTML representation of all of the
* form variables and the associated values.
public static String Variables(Hashtable form_data)
String returnString;
returnString = "<dl compact>\n";
for (Enumeration e = form_data.keys() ; e.hasMoreElements() ;)
String key = (String)e.nextElement();
String value = (String)form_data.get(key);
returnString += "<dt><b>" + key + "</b> <dd>:<i>" +
value +
"</i>:<br>\n";
returnString += "</dl>\n";
return returnString;
* The main routine is included here as a test CGI script to
* demonstrate the use of all of the methods provided above.
* You can use it to test your ability to execute a CGI script written
* in Java. See the sample UNIX script file included above to see
* how you would invoke this routine.<p>
* Please note that this routine references the member functions directly
* (since they are in the same class), but you would have to
* reference the member functions using the class name prefix to
* use them in your own CGI application:<p>
* <pre>
* System.out.println(cgi_lib.HtmlTop());
* </pre>
* @param args An array of Strings containing any command line
* parameters supplied when this program in invoked. Any
* command line parameters supplied are ignored by this routine.
public static void main( String args[] )
// This main program is simply used to test the functions in the
// cgi_lib class.
// That said, you can use this main program as a test cgi script. All
// it does is echo back the form inputs and enviroment information to
// the browser. Use the testcgi UNIX script file to invoke it. You'll
// notice that the script you use to invoke any Java application that
// uses the cgi_lib functions MUST pass all the CGI enviroment variables
// into it using the -D parameter. See testcgi for more details.
// Print the required CGI header.
System.out.println(Header());
// Create the Top of the returned HTML
// page (the parameter becomes the title).
System.out.println(HtmlTop("Hello World"));
System.out.println("<hr>");
// Determine the request method used by the browser.
if (MethGet())
System.out.println("REQUEST_METHOD=GET");
if (MethPost())
System.out.println("REQUEST_METHOD=POST");
System.out.println("<hr>");
// Determine the Base URL of this script.
System.out.println("Base URL: " + MyBaseURL());
System.out.println("<hr>");
// Determine the Full URL used to invoke this script.
System.out.println("Full URL: " + MyFullURL());
System.out.println("<hr>");
// Print all the CGI environment variables
// (usually only used while testing CGI scripts).
System.out.println(Environment());
System.out.println("<hr>");
// Parse the form data into a Hashtable.
Hashtable form_data = ReadParse(System.in);
// Print out each of the name/value pairs
// from sent from the browser.
System.out.println(Variables(form_data));
System.out.println("<hr>");
// Access a particular form value.
// (This assumes the form contains a "name" input field.)
String name = (String)form_data.get("name");
System.out.println("Name=" + name);
System.out.println("<hr>");
// Create the Bottom of the returned HTML page - which closes it cleanly.
System.out.println(HtmlBot());
SERVER-SIDE PROGRAM TO RETURN PING
import java.util.*;
import java.io.*;
class ping
public static void main(String args[]) {
System.out.println(cgi_lib.Header());
Hashtable form_data = cgi_lib.ReadParse(System.in);
String one = (String)form_data.get("first");
String two = (String)form_data.get("last");
boolean test;
test = false;
if (one.equals("I am")) {
if (two.equals("number 1")) {
test = true;
if (test == true) {
System.out.println("pass");
} else {
System.out.println("fail");
//Datavasee
ENJOY :) -
Does XI support Socket communication?
Hi,
This question came from our customers and consultants.
I saw the definition of socket in Wikipedia that it is somehow based on TCP, UDP. So far as I know, XI does not "support" TCP/IP. Does this mean XI does not support Socket either? Or this could be covered in the adapters of XI?
If XI does not support this, do you have any experience of a solution to socket communication?
Thanks in advance!
best regards
JingHi,
sorry for the late reply.
I understand you that PI does not quite meet healthcare specific requirements.
Regrading medical equipment with PI, I am not familiar with that part.
But I have good news regarding HL7 protocol with PI. In the meantime we (SAP) have a service solution of HL7 adapter for PI, that supports HL7 communications based on HL7 message format/protocol.
Details please see this blog from Vijendra: http://scn.sap.com/docs/DOC-3891
hope this helps you.
Regards
Jing -
If a machine opens a socket connection to me, how to I get data from it. I have the IP of the machine and the socket number. Do I just give the IP number to Data Socket Read and the listen for data?
ThanksHi Exo,
"You can only use DataSocket as a client on Linux, Solaris and Macintosh. This
means that from a non-Windows machine you can publish to and read from a
DataSocket Server, but the server itself must be running on a Windows machine. The DataSocket Server application is built on Windows-based ActiveX
technology and so is only available for Windows environments." This is from KnowledgeBase 29A9RA8V.
In the LabVIEW Example Finder >> Communicating with External Applications >> OLE for Process Control (OPC) >> open the Browse to OPC Item example. The example will build the URL to the OPC server item if it is available on the network. You can also see How Do I Use OPC in LabVIEW? I hope this helps. -
I am facing a problem in presentation server .
When i am using AGO date functions i have encountered an error named as.:
nQS Error:12002 : Socket Communication error at call=recv (number=10054)
I have goggle'd it but cannot understand thier explanation ...Hi,
Mistakenly my machine got restarted and after that when I tried to start OPMN services,its showing all the processes alive but after that ,while restarting BI services from windows
its throwing an error of unexpectedly shutting down of services.
My NQS log says:
[nQSError: 12010] Communication error connecting to remote end point: address = 192.168.10.209; port = 80.
[nQSError: 46119] Failed to open HTTP connection to server 192.168.10.209 at port 80.
I have checked that IP is still same. What is the issue behind it?
This is very urgent.I have already posted this issues many times but didn't get any response So please help. -
Communication protocol applet and server application
Hello,
I want to read and write on server port such that applet is communicating with a server application.
Can any body suggest me any application level communication protocol or algo so that read and write are syncronised.
There is no blocking b/w I/o streams while clients are reading or writing to server.
shahzadLook at this 3 pages
http://java.sun.com/docs/books/tutorial/networking/sockets/index.html
http://java.sun.com/products/javacomm/javadocs/API_users_guide.html
http://java.sun.com/docs/books/tutorial/networking/sockets/clientServer.html
Noah -
ORA-03106: fatal two-task communication protocol error
Hello everyone,
we have a problem with one of our table.
the problem occurs when i execute
SQL> select * from t;
select * from t
ERROR at line 1:
ORA-03106: fatal two-task communication protocol error
but i can access the data by giving the column names for the whole table.
also there is nothing wrong with the other tables in the schema.
many thanx in advancefirst of all thanx in advance
SQL> select * from v$version;
BANNER
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bi
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for IBM/AIX RISC System/6000: Version 10.2.0.1.0 - Productio
NLSRTL Version 10.2.0.1.0 - Production
SQL> select comp_id, version, status from dba_registry;
COMP_ID VERSION STATUS
CATALOG 10.2.0.1.0 VALID
CATPROC 10.2.0.1.0 VALID
OWM 10.2.0.1.0 VALID
JAVAVM 10.2.0.1.0 VALID
XML 10.2.0.1.0 VALID
CATJAVA 10.2.0.1.0 VALID
EXF 10.2.0.1.0 VALID
ODM 10.2.0.1.0 VALID
CONTEXT 10.2.0.1.0 VALID
XDB 10.2.0.1.0 VALID
RUL 10.2.0.1.0 VALID
COMP_ID VERSION STATUS
ORDIM 10.2.0.1.0 VALID
APS 10.2.0.1.0 VALID
XOQ 10.2.0.1.0 VALID
AMD 10.2.0.1.0 VALID
SDO 10.2.0.1.0 VALID
EM 10.2.0.1.0 VALID
but i cannot understand why..
as far as i know, nothing changed. but maybe the other admins:)
as i said i can query all colums in table t without using a *,
also i can use * when i include rowid in the query
select m.*,rowid from t m;
i am very confused now:S -
ORA-03106: fatal two-task communication protocol erro
Hi,
I have been writing an oracle client application for Linux and I am
getting the error ORA-03106: fatal two-task communication protocol:
fatal two-task communication protocol error".
I am trying to do a Piecewise fetch of long data using
OCIDefineDynamic() and a callback function. The callback is being called
but after setting the buffer information for the data I get an ORA-03106
error.
If I just do this as a normal fetch it works.
Any ideas?Hi,
"Two-task common errors are generally RDBMS related issues, but could be caused by a problem with SQL*Net, or an application (i.e. Pro*C).
ORA-03106
========
Possible reasons for the ORA-03106 errors include:
1) Incompatibilities between the client application and the RDBMS server. For example, version incompatibilities, or a client trying to use a feature not supported by the database kernel.
2) When using database links or gateways.
3) Network or SQL*Net problems.
4) Corruptions.
5) PL/SQL - language related."
For more information, take a look at Note:1012295.102 from Oracle Metalink.
Cheers
Legatti -
ORA-03106: fatal two-task communication protocol
Hi,
I am getting this error with the short dump(in ST22) DBIF_SETG_SQL_ERROR.
The details of the dump is also given.
Please help.
Runtime Error DBIF_SETG_SQL_ERROR
Occurred on 12.08.2008 at 08:30:37
SQL error occurred in the database when accessing a table.
What happened?
What can you do?
Make a note of the actions and input which caused the error.
To resolve the problem, contact your SAP system administrator.
You can use transaction ST22 (ABAP Dump Analysis) to view and administer
termination messages, especially those beyond their normal deletion
date.
Error analysis
How to correct the error
Database error text........: "ORA-03106: fatal two-task communication protocol
error"
Internal call code.........: "[SETG/GET /VBDATA ]"
Please check the entries in the system log (Transaction SM21).
You may able to find an interim solution to the problem
in the SAP note system. If you have access to the note system yourself,
use the following search criteria:
"DBIF_SETG_SQL_ERROR" C
"SAPLSEUAX" or "LSEUAXV01"
"RS_NEW_PROGRAM_INDEX"
If you cannot solve the problem yourself, please send the
following documents to SAP:
1. A hard copy print describing the problem.
To obtain this, select the "Print" function on the current screen.
2. A suitable hardcopy prinout of the system log.
To obtain this, call the system log with Transaction SM21
and select the "Print" function to print out the relevant
part.
3. If the programs are your own programs or modified SAP programs,
supply the source code.
To do this, you can either use the "PRINT" command in the editor or
print the programs using the report RSINCL00.
4. Details regarding the conditions under which the error occurred
or which actions and input led to the error.
System environment
SAP Release.............. "620"
Application server....... "awnts151"
Network address.......... "192.168.10.33"
Operating system......... "Windows NT"
Release.................. "5.2"
Hardware type............ "8x Intel 80686"
Character length......... 8 Bits
Pointer length........... 32 Bits
Work process number...... 10
Short dump setting....... "full"
Database server.......... "AWNTS151"
Database type............ "ORACLE"
Database name............ "DEE"
Database owner........... "SAPR3"
Character set............ "English_United State"
SAP kernel............... "640"
Created on............... "Jun 23 2008 21:48:04"
Created in............... "NT 5.0 2195 Service Pack 4 x86 MS VC++ 13.10"
Database version......... "OCI_920_SHARE "
Patch level.............. "239"
Patch text............... " "
Supported environment....
Database................. "ORACLE 9.2.0.., ORACLE 10.1.0.., ORACLE
10.2.0.."
SAP database version..... "640"
Operating system......... "Windows NT 5.0, Windows NT 5.1, Windows NT 5.2,
Windows NT 6.0"
User, transaction...
Client.............. 999
User................ "AIL_DEV"
Language key........ "E"
Transaction......... "SE38 "
Program............. "SAPLSEUAX"
Screen.............. "RSM13000 3000"
Screen line......... 2
Information on where terminated
The termination occurred in the ABAP program "SAPLSEUAX" in
"RS_NEW_PROGRAM_INDEX".
The main program was "RSM13000 ".
The termination occurred in line 27 of the source code of the (Include)
program "LSEUAXV01"
of the source code of program "LSEUAXV01" (when calling the editor 270).
The program "SAPLSEUAX" was started in the update system.
Source code extract
000010 *******************************************************************
000020 * THIS FILE IS GENERATED BY THE FUNCTION LIBRARY. *
000030 * NEVER CHANGE IT MANUALLY, PLEASE! *
000040 *******************************************************************
000050 FORM RS_NEW_PROGRAM_INDEX USING %_KEY.
000060 * Parameter declaration
000070 DATA %_P0000000001 TYPE
000080 PROGRAM
000090 .
000100 DATA %_P0000000002 TYPE
000110 PROGRAM
000120 .
000130 DATA: %_STATE.
000140 * Assign default values
000150 * Get mode for update task
000160 CALL 'GET_SWITCH_UTASK'
000170 ID 'MODE' FIELD 'S'
000180 ID 'STATE' FIELD %_STATE.
000190 IF %_STATE EQ 'N'.
000200 * Import from memory
000210 IMPORT
000220 P_NAME TO %_P0000000001
000230 P_INCLUDE TO %_P0000000002
000240 FROM MEMORY ID %_KEY.
000250 ELSE.
000260 * Import from logfile
IMPORT
000280 P_NAME TO %_P0000000001
000290 P_INCLUDE TO %_P0000000002
000300 FROM LOGFILE ID %_KEY.
000310 ENDIF.
000320 * Call update task
000330 CALL FUNCTION 'RS_NEW_PROGRAM_INDEX'
000340 EXPORTING
000350 P_NAME = %_P0000000001
000360 P_INCLUDE = %_P0000000002
000370 .
000380 ENDFORM.
Contents of system fields
SY field contents..................... SY field contents.....................
SY-SUBRC 0 SY-INDEX 0
SY-TABIX 1 SY-DBCNT 1
SY-FDPOS 0 SY-LSIND 0
SY-PAGNO 0 SY-LINNO 1
SY-COLNO 1 SY-PFKEY
SY-UCOMM SY-TITLE Update control
SY-MSGTY SY-MSGID
SY-MSGNO 000 SY-MSGV1
SY-MSGV2 SY-MSGV3
SY-MSGV4
Active calls / events
No.... Type........ Name..........................
Program
Include Line
Class
5 FORM RS_NEW_PROGRAM_INDEX
SAPLSEUAX
LSEUAXV01 27
4 FORM VB_CALL_FUNC
RSM13000
RSM13000 5441
3 FORM VB_V1_EXEC
RSM13000
RSM13000 5182
2 FORM VB_V1_NORMAL
RSM13000
RSM13000 3944
1 MODULE (PBO) VBEXEC
RSM13000
RSM13000 3793
Chosen variables
5 FORM RS_NEW_PROGRAM_INDEX
SAPLSEUAX
LSEUAXV01 27
%_DUMMY$$
2222
0000
%_STATE Y
5
9
RSJOBINFO 00000000
2222222222222222222222222222222233333333
0000000000000000000000000000000000000000
... + 40 000000
3333332222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 80 ####
0000
0000
%_KEY 2CF93538B4E949608CAEF68FCB839DA0####
344333334343333334444334443334430000
236935382459496083156686328394101000
SY-SUBRC 0
0000
0000
SYST-REPID SAPLSEUAX
5454545452222222222222222222222222222222
310C355180000000000000000000000000000000
%_P0000000001
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
%_P0000000002
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
%_VIASELSCR #
0
4
SY-REPID SAPLSEUAX
5454545452222222222222222222222222222222
310C355180000000000000000000000000000000
4 FORM VB_CALL_FUNC
RSM13000
RSM13000 5441
SAVE_VBPARAM #
0
3
VBPARAM 2CF93538B4E949608CAEF68FCB839DA00001RS_N
3443333343433333344443344433344333335554
23693538245949608315668632839410000123FE
... + 40 EW_PROGRAM_INDEX AIL_DEV 99
4555544544544445222222222244454452222233
57F02F721DF9E458000000000019CF4560000099
... + 80 9### ##
3000222222222222222222222222222220022222
9612000000000000000000000000000001100000
... + 120
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 160
2222222222222222222
0000000000000000000
VBHDR-VBTCODE SE38
54332222222222222222
35380000000000000000
VBHDR-VBREPORT RS_CALL_PROGRAMM_INDEX_DELTA
5554444555445444544445544454222222222222
23F31CCF02F721DDF9E458F45C41000000000000
VBMODCNT 1
0000
1000
DLDE DLDE
4444222222222222222222222222222222222222
4C45000000000000000000000000000000000000
... + 40
222222222222222222222222222222
000000000000000000000000000000
VBPARAM-VBPHASE 538968577
0
1
VB_V1_TEST #
0
2
SYST-REPID RSM13000
5543333322222222222222222222222222222222
23D1300000000000000000000000000000000000
HGEN HGEN
4444222222222222222222222222222222222222
875E000000000000000000000000000000000000
... + 40
222222222222222222222222222222
000000000000000000000000000000
IS_A_ARFC #
0
0
TH_TRUE #
0
1
OFFICE_TASO00 SO00
5433222222222222222222222222222222222222
3F00000000000000000000000000000000000000
... + 40
222222222222222222222222222222
000000000000000000000000000000
TH_FALSE #
0
0
VBSTAT-START2_REQ
222222222222222
000000000000000
EWST EWST
4555222222222222222222222222222222222222
5734000000000000000000000000000000000000
... + 40
222222222222222222222222222222
000000000000000000000000000000
BACK BAC
4442222222222222222222222222222222222222
2130000000000000000000000000000000000000
... + 40
222222222222222222222222222222
000000000000000000000000000000
TFDIR RS_NEW_PROGRAM_INDEX SAPLSEUAX
5554455554454454444522222222225454545452
23FE57F02F721DF9E4580000000000310C355180
... + 40 0100000000
2222222222222222222222222222223333333333
0000000000000000000000000000000100000000
... + 80 1
22222222222223
00000000000001
TFDIR-PNAME SAPLSEUAX
5454545452222222222222222222222222222222
310C355180000000000000000000000000000000
VBFUNC RS_NEW_PROGRAM_INDEX
555445555445445444452222222222
23FE57F02F721DF9E4580000000000
%_DUMMY$$
2222
0000
VBID 2CF93538B4E949608CAEF68FCB839DA0####
344333334343333334444334443334430000
236935382459496083156686328394101000
VBDEBUG 538976258
0
2
VB_UPDATE_MODUL_PROCESSED #
1
C
3 FORM VB_V1_EXEC
RSM13000
RSM13000 5182
ROLE_SUBST_ACTIVE 3
3
3
VBMOD_TABL-VBMODE 1
3
1
VB_COLLECTOR_FB 5
3
5
SY-REPID RSM13000
5543333322222222222222222222222222222222
23D1300000000000000000000000000000000000
LISL LISL
4454222222222222222222222222222222222222
C93C000000000000000000000000000000000000
... + 40
222222222222222222222222222222
000000000000000000000000000000
EXISTS_COLLECTOR #
0
0
VB_V1_FB 1
3
1
VB_V1_NO_UPD_AGAIN_FB 3
3
3
VBHDR-VBSTATE 826605823
F
F
VB_V1_PROCESSED #
0
1
VB_V1_AND_V2_PROCESSED #
0
2
SYST ########################################
0000000000000000000000000000000000000000
0000000010001000000000000000000000000000
... + 40 ####################u0161###############H###
0000000000000000000090000000000000004000
10000000100000001000A0000000000000008000
... + 80 ########################################
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
... + 120 ########################################
0000000000000000000000000000000010009000
00000000000000000000000000000000B0000000
... + 160 ############XM## ############# E0 3
0000000000005400220000000000000222432223
0000000000008D00000020000C0000C000500003
... + 200 000 N ####__S 999
3332222222420000555222222222222222223332
0000000000E00000FF3000000000000000009990
... + 240 00
222223322222222
000000000000000
MTAS MAS
4452222222222222222222222222222222222222
D130000000000000000000000000000000000000
... + 40
222222222222222222222222222222
000000000000000000000000000000
VBMOD_TABL-VBKEY 2CF93538B4E949608CAEF68FCB839DA0
34433333434333333444433444333443
23693538245949608315668632839410
VBMOD_TABL-VBFUNC RS_NEW_PROGRAM_INDEX
555445555445445444452222222222
23FE57F02F721DF9E4580000000000
VBMOD_TABL-VBMODCNT 1
0000
1000
LOC_VBPARAM-VBPHASE 538968577
0
1
LOC_VBPARAM-VBDEBUG 538976258
0
2
READ READ
5444222222222222222222222222222222222222
2514000000000000000000000000000000000000
... + 40
222222222222222222222222222222
000000000000000000000000000000
EXISTS_V2 #
0
0
SPACE
2
0
NEW_VBSTATE 0
0
0
OBJA OBJA
4444222222222222222222222222222222222222
F2A1000000000000000000000000000000000000
... + 40
222222222222222222222222222222
000000000000000000000000000000
OFFICE_TASO18 SO18
5433222222222222222222222222222222222222
3F18000000000000000000000000000000000000
... + 40
222222222222222222222222222222
000000000000000000000000000000
USER_NOT_EXIST 34
2000
2000
SY-XPROG
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
SY-XFORM
222222222222222222222222222222
000000000000000000000000000000
2 FORM VB_V1_NORMAL
RSM13000
RSM13000 3944
VBHDR-VBCLIINFO #
0
0
VB_SYNC_VB #
0
1
%_ARCHIVE
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 40
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 80
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 120
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 160
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 200
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 240
222222222222222
000000000000000
SY-MSGID
22222222222222222222
00000000000000000000
ROOM_TAPP30 PP30
5533222222222222222222222222222222222222
0030000000000000000000000000000000000000
... + 40
222222222222222222222222222222
000000000000000000000000000000
ADMI ADM
4442222222222222222222222222222222222222
14D0000000000000000000000000000000000000
... + 40
222222222222222222222222222222
000000000000000000000000000000
SY-MSGNO 000
333
000
NOTE_NOT_ADDED 11
0000
B000
SY-MSGV1
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 40
2222222222
0000000000
SY-MSGV2
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 40
2222222222
0000000000
SY-MSGV3
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 40
2222222222
0000000000
SY-MSGV4
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 40
2222222222
0000000000
LOGO LOG
4442222222222222222222222222222222222222
CF70000000000000000000000000000000000000
... + 40
222222222222222222222222222222
000000000000000000000000000000
VBHDR 2CF93538B4E949608CAEF68FCB839DA0999AIL_D
3443333343433333344443344433344333344454
2369353824594960831566863283941099919CF4
... + 40 EV RS_CALL_PROGRAMM_INDE
4522222222222222222555444455544544454444
560000000000000000023F31CCF02F721DDF9E45
... + 80 X_DELTA SE38
5544454222222222222543322222222222222222
8F45C41000000000000353800000000000000000
... + 120
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 160 ÿ###awnts151_DEE_00
22222222222222222222F0006767733354445332
00000000000000000000F00017E43151F455F000
... + 200
2222222222222222222222222222222222222222
0000000000000000000000000000000000000000
... + 240 :E:
222222223432222
00000000A5A0000
1 MODULE (PBO) VBEXEC
RSM13000
RSM13000 3793
VB_V1_NORMAL #
0
1
%_SPACE
2
0
STOP RET
5452222222222222222222222222222222222222
2540000000000000000000000000000000000000
... + 40
222222222222222222222222222222
000000000000000000000000000000
RSUP RSUP
5555222222222222222222222222222222222222
2350000000000000000000000000000000000000
... + 40
222222222222222222222222222222
000000000000000000000000000000
USPR USPR
5555222222222222222222222222222222222222
5302000000000000000000000000000000000000
... + 40
222222222222222222222222222222
000000000000000000000000000000
VB_V2_NORMAL #
0
3
ENTER ENTR
4455222222222222222222222222222222222222
5E42000000000000000000000000000000000000
... + 40
222222222222222222222222222222
000000000000000000000000000000
USAD USAD
5544222222222222222222222222222222222222
5314000000000000000000000000000000000000
... + 40
222222222222222222222222222222
000000000000000000000000000000
VB_MAIL #
0
4
INBO INB
4442222222222222222222222222222222222222
9E20000000000000000000000000000000000000
... + 40
222222222222222222222222222222
000000000000000000000000000000
PAGP PAGP
5445222222222222222222222222222222222222
0170000000000000000000000000000000000000
... + 40
222222222222222222222222222222
000000000000000000000000000000
VB_AUTO_SYS_START #
0
5
Application Calls
No dump information available
Application Information
No dump information available
Internal notes
The termination occurred in the function "expInpDb " of the SAP
Basis System, specifically in line 4364 of the module
"//bas/640_REL/src/krn/runt/abexpo.c#14".
The internal operation just processed is "IMPO".
The internal session was started at 20080812083037.
Internal call code.........: "[SETG/GET /VBDATA ]"
Active calls in SAP kernel
SAP (R) - R/3(TM) Callstack, Version 1.0
Copyright (C) SAP AG. All rights reserved.
Callstack without Exception:
App : disp+work.EXE (pid=5484)
When : 8/12/2008 8:30:37.808
Threads : 2
Computer Name : AWNTS151
User Name : SAPSERVICEDEE
Number of Processors: 8
Processor Type: x86 Family 6 Model 15 Stepping 11
Windows Version : 5.2 Current Build: 3790
Stack Dump for Thread Id 1578
eax=00000201 ebx=0000040c ecx=00000210 edx=009c35fa esi=0000040c edi=00000000
eip=7c8285ec esp=0410cd10 ebp=0410cd80 iopl=0 nv up ei ng nz ac po cy
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00200297
function : KiFastSystemCallRet
7c8285ec c3 ret
7c8285ed 8da42400000000 lea esp,[esp] ss:0410cd10=7c827d0b
7c8285f4 8d642400 lea esp,[esp] ss:2571bd23=????????
FramePtr ReturnAd Param#1 Param#2 Param#3 Param#4 Function Name
0410cd80 77e61c8d 0000040c 0001d4c0 00000000 0410cdb8 ntdll!KiFastSystemCallRet
0410cd94 00f6a44d 0000040c 0001d4c0 00000001 7c3ad8c8 kernel32!WaitForSingleObject
0410cdb8 0054011a 00540153 7c3ad8c8 7c3ad8c8 7c3ad8c8 disp+work!NTDebugProcess >
>
0410cdbc 00540153 7c3ad8c8 7c3ad8c8 7c3ad8c8 01778db4 disp+work!NTStack >
>
0410cdd8 00540187 7c3ad8c8 00000000 008224b3 7c3ad8c8 disp+work!CTrcStack2 >
>
0410cde4 008224b3 7c3ad8c8 00040000 41305f59 30303030 disp+work!CTrcStack >
>
0410ce00 008259e9 02079620 0472a370 00000000 00000000 disp+work!rabax_CStackSave >
>
0410d2a0 007a00f8 01223708 012755fc 0000110c 018ac020 disp+work!ab_rabax >
>
0410d30c 00725113 00000001 01223708 0000110c 018ac020 disp+work!ab_setgerr >
>
0410d36c 007ac556 0410d498 0410d49c 00000000 00000000 disp+work!expInpDb >
>
0410e618 007278d3 00000003 00000000 00000000 00000000 disp+work!ab_connread >
>
0410e69c 0072a3a9 00000001 00000000 00000000 00000000 disp+work!ab_expvb >
>
0410e6d4 0067334a 00000003 516c9cf0 00000000 0410e73c disp+work!expo_import >
>
018ac020 2f2f203a 2f736162 5f303436 2f4c4552 2f637273 disp+work!ab_extri >
>
64492420 00000000 00000000 00000000 00000000 00000000
0668ffb8 77e64829 04f7feb0 00000000 00000000 04f7feb0 MSVCR71!endthreadex
0668ffec 00000000 7c3621a4 04f7feb0 00000000 00000000 kernel32!GetModuleHandleA
List of ABAP programs affected
Type
Program
Gen. Date Time
Load Size
Prg
RSM13000
19.05.2007 19:22:41
242688
Prg
SAPMSSYD
05.06.2002 17:09:33
16384
Prg
SAPFSYSCALLS
14.02.2002 14:22:47
6144
Typ
VBHDR
09.11.2000 14:25:09
5120
Typ
VBMOD
08.08.1995 14:49:58
2048
Typ
TFDIR
29.07.1998 19:49:08
3072
Typ
TFDIR
29.07.1998 19:49:08
3072
Prg
SAPLSEUAX
19.05.2007 19:03:05
8192
Typ
SYST
04.12.2000 14:54:51
27648
Typ
VBPARAM
30.03.1998 09:43:02
4096
Typ
VBSTAT
07.05.1997 13:20:30
9216
Typ
VBMOD
08.08.1995 14:49:58
2048
List of internal tables
No dump information available
Directory of Application Tables
Program
Name................ Contents....1........2........3........4........5....+....
RSM13000
SYST |000000000000x01000000000000000
VBHDR |2CF93538B4E949608CAEF68FCB839DA0999AIL_DEV
VBPARAM |2CF93538B4E949608CAEF68FCB839DA00001RS_NEW_PROGRAM_INDEX
VBSTAT |0
TFDIR |RS_NEW_PROGRAM_INDEX SAPLSEUAX
SAPLSEUAX
RSJOBINFO | 00000000000000
Directory of Application Tables (Administrative Information)
Program
Name.......................... Time.......... Length...
SAPLSEUAX
SYST 00002404
VBHDR 00000432
VBPARAM 20000323224119 00000179
VBSTAT 00000736
TFDIR 00000094
SAPLSEUAX
RSJOBINFO 00000084
ABAP control blocks CONT
Include Line source code
Index Name F1 Co Par01 Par2. Par3. Par4. Tabl
LSEUAXV01 19 IF %_STATE EQ 'N'.
61 cmp1 00 42 0020
63 BRAF 02
LSEUAXV01 21 IMPORT
64 TCHK 04 15
66 CLEA 00
67 XDAT 90
69 XDAT 91 03 C000
71 XDAT 91 03 C001
LSEUAXV01 25 ELSE.
73 BRAX 00
LSEUAXV01 27 IMPORT
74 TCHK 07 15
76 IMPO 04 02 0000
80 PAR2 06 C000
82 PAR2 06 C001
>>>>> IMPO 05 0000
LSEUAXV01 33 CALL FUNCTION 'RS_NEW_PROGRAM_
88 FUNC 00
89 FUNC 00
90 PAR2 02 C001
92 PAR2 02 C000
94 FUNC 10
95 FUNC FF
LSEUAXV01 38 ENDFORM.
96 ENDF 00
End of runtime analysis
Please help.
Regards,
siddharthaHi Guys,
Thanks for the reply!!
To SriHari,
Just to get the insight of the problem am posting it in the forum.Sometimes, it need not be an oracle issue instead it may be an Kernel issue. I did not know which sort of issue as i am new to Basis. Sorry if i have done anything wrong and against the ethics of this forum. Please pardon.
To Fidel Vales,
1) I have installed 10.2.0.2 patch which is available in the service marketplace.
i have not installed the OPatch
2) My kernel version is 239 (SAP R/3 4.7)
3) The env variables are give beolow.
DBMS_TYPE=ORA
DBS_ORA_SCHEMA=SAPR3
dbs_ora_tnsname=DEE
NLS_LANG=AMERICAN_AMERICA.WE8DEC
NUMBER_OF_PROCESSORS=8
ORACLE_HOME=D:\ORACLE\DEE\102
ORACLE_SID=DEE
OS=Windows_NT
Path=C:\Perl\bin\;D:\oracle\DEE\102\jre\1.4.2\bin\client;D:\oracle\DEE\102\jre\1
.4.2\bin;C:\Program Files\EMC\PowerPath\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDO
WS\System32\Wbem;C:\Program Files\Dell\SysMgt\RAC5;C:\Program Files\Dell\SysMgt\
oma\bin;C:\Program Files\Dell\SysMgt\oma\oldiags\bin;C:\Program Files\EMC\Navisp
here CLI;C:\Program Files\Resource Kit\;D:\Oracle92\Opatch;D:\Oracle92\Opatch;d:
\oracle\DEE\102;D:\usr\sap\DEE\sys\exe\run;D:\Oracle\DEE\102\BIN;d:\oracle92;d:\
oracle92\bin;D:\usr\sap\DEE\sys\exe\run;
SAPARCH=E:\oracle\DEE\saparch
SAPBACKUP=E:\oracle\DEE\sapbackup
SAPCHECK=E:\oracle\DEE\sapcheck
SAPDATA_HOME=E:\oracle\DEE
SAPEXE=D:\usr\sap\DEE\SYS\exe\run
SAPLOCALHOST=awnts151
SAPREORG=E:\oracle\DEE\sapreorg
SAPTRACE=E:\oracle\DEE\saptrace
SAPTRANSHOST=AWNTS151
TNS_ADMIN=D:\usr\sap\DEE\sys\profile\ORACLE
USERDNSDOMAIN=AUDCO9.AILVALVES.COM
USERDOMAIN=AUDCO9
USERNAME=deeadm
USERPROFILE=C:\Documents and Settings\deeadm
USE_KIT=OFF
4) Since there is no application server i have not installed oracle client.
5) Kernel version is 640.
Please help.
Thanks and regards,
siddhartha.
Maybe you are looking for
-
Retrieving my 9800 data from back-up file on PC not having another phone
The ribbon for the slide screen is not functioning therefore my screen is blank and black. However I have a back-up on my computer; how can I read my data? Can I use mu USB to access my phone and read data directly on the the phone. Please advise.
-
IPad is now useless after trying to install iOS 6.1.3
Tried to update this today and now telling me I need to restore, so have lost all my photos and progress on apps etc. any ideas on how to get my old iPad back!!
-
has any1 connected via a hdmi i have been told that its not as good as vga but its a higher res?? any1 tried it? which is best?? also is the hdmi that bad or is it still good??
-
Custom field in COOIS selection screen
Hi all, how do I add a custom field (IOHEADER-ASTTX, User status) in the COOIS selection screen ? Thank's Edited by: Marco De Caro on Dec 6, 2011 2:15 PM Edited by: Marco De Caro on Dec 6, 2011 2:16 PM
-
Controlling Newport SMC100 with Labview
Dear all, I need to control a single axis Newport motor via Newport SMC100, i installed the SMC100 labview drivers. Do anyone have examples? OR anyone can show me the way about how can i implement my system very fast? Please have a look at the brief