Difficulty in communicating through TCP BIS-B socket

I have tries to establish a TCP via BIS - B connection and run into some problems.  Before describing the situation, I just want to clarify:

-We are members of the BlackBerry Alliance program;
-We have received permission to use BIS-B;
-L'application now works under direct TCP. and
-L' sample application supplied with the BIS-B information kit works well on the device.

So, it seems that the camera has access BIS-B and that our application should be able to connect through BIS-B without difficulty.  Previously, I have forwarded this issue to the Alliance but has been achieved here for support, so I will briefly the question not to mention that all aspects of BIS - B covered under the NDA.

Here's the situation:

The connection string that I use to create a TCP socket in our program the device server is:
Socket://IP_ADDRESS:TCP_SERVER_PORT; BIS_B_CONNECTION_STRING

Where:
Ip_address is the IP address of the server, the connection program is made for;
TCP_SERVER_PORT is the TCP port; and
BIS_B_CONNECTION_STRING is provided to access BIS-B connection string.

As with direct TCP, the SocketConnection object is created:
(SocketConnection) Connector.Open (connString, Connector.READ_WRITE);

Where connString is the above connection string.  Once the connector is created, threads separate send and receive support are started.

To connect to the server, a packet of 76 bytes of data is written to the socket with OutputStream.write (byte [] b, int off, int len) and rinse with OutputStream.flush ().  Data are received on the server without problem and a 32-byte ACK packet is sent to the server to the device subsequently.

Here is where the problem appears: the client application on the device never receives the data sent from the server.  Even if the socket has been established and data can be sent on this socket of the device to the server, not a single byte sent from the server to the device is received by the device.  However, when you use TCP direct to establish awareness, data are transmitted between the server and the device without problem.

This leads me to conclude that one or both of the following ways are produced:

(1) I'm not creates the socket correctly for a BIS - B connection.

The examples in the documentation for BIS - B are all for HTTP connections and no demo code is provided to show how a TCP socket should be created.  It is quite possible, there is a minor adjustment for the BIS-B connection string which I am unaware or I create the socket incorrectly.

(2) my BlackBerry service provider incorrectly configured their BIS-B network connections.

My device is connected to TELUS and the situation I am facing to sounds a bit like the one described by this man in 2008:

http://supportforums.BlackBerry.com/T5/General-BlackBerry-smartphone/TELUS-confirmed-BlackBerry-bis-...

Given that the problem occurs when the data is passed from the server to the device, it seems possible that the IP addresses of device are not properly being NATted on the public address that the server transmits data.  I called people of the TELUS DNA to confirm the BIS-B service is available, but (as the related post described), which does not necessarily eliminate the possibility of a misconfigured NAT.

So my questions to you people are:

-If a TCP server program receives data from a device via BIS - B, does indicate that the BIS - B has been correctly established (and so the problem of receiving data server-device is specific to the device or carrier)?

-J' I am doing something obviously wrong when establishing a TCP via BIS - B socket?

-Are there a required additional parameter in the connection string (beyond those provided by the HTTP BIS-B connection example) which creates a TCP via BIS - B socket?

Cause of the problem proved to be the use of InputStream.available () to check the amount of bytes available to entrants on the socket.

Although InputStream.available () worked well for direct TCP (at least for CDMA Networks), the method returns always 0 when it receives on BIS - B bytes.  As a result, it appeared that the side Server-device of the TCP socket was not receiving data when in fact, the data were available for playback.  With the help of InputStream.read () instead, block and read each byte it received on the socket has resolved the problem.  Given that the incompatible features, I would recommend avoiding the use of InputStream.available ().

For all those looking at the creation of BIS-B TCP taken in the future, here an answer to my original question:

The connection string to use to create a TCP socket BIS - B is the same as that shown in the code examples in the RIM for an HTTP connection (examples of code and your BIS - B connection string are received once approval has been given to use BIS-B under the program of the Alliance).

For example, if your connection string to create a direct TCP socket would be:

Socket://IP_ADDRESS:TCP_PORT; deviceside = true

where ip_address is the IP address of your server TCP program and port_tcp is the network port on which traffic is received by the server, you need to replace only the "; deviceside = true' part of your connection string with the string supplied by RIM for your BIS - B connection.  The resulting string would then serve to create a standard TCP socket, such as the following:

(SocketConnection) Connector.Open (connString, Connector.READ_WRITE);

where connString is your ' socket: / /... ". ' connection string.

Tags: BlackBerry Developers

Similar Questions

  • You can trigger through communication Modbus TCP/IP PLC data acquisition without using a loop for?

    Hello

    I am trying to contact a facility through a Modbus TCP/IP communication PLC. I'm new to this method, but the idea is that the installation will send the logical (Boolean) values 1 bit by ethernet to my workstation which read and then will begin data acquisition. Basically, I need a triger to come to my pc. I placed my vi inside a structure case T/F which will run according to the signal, it receives data acquisition. However, for it constantly waiting, I put this in a loop for. The works of vi, but playback signals sometimes lagging behind due to the loop for. If I take the loop out and just run labview permanently, it works perfectly, but I know that the option is only for debugging and should not be used. So my question is, is there a better way to wait for an incoming signal?

    Hello!

    Please note that the order of execution of the write operations on the shared variable 000002 is not determined.

    For example, nothing prevents this order of execution:

    (1) value false 000002

    (2) set to true 000002

    (3) execution of the loop

    In what concerns the delay, you might consider placing a waiting vi in the case of 'false', or the loop uses 100% of CPU if I'm not mistaken...

    Kind regards

    Marco

  • Possible GPIB communication through interactive control of Visa, not with Labview

    Hello

    I have a communication problem with Labview with GPIB instruments (with functions of visa).

    I get:

    "Error 1073807298 occurred at the VISA opening

    Possible reasons:

    "VISA: (Hex 0xBFFF003E) failed to perform operation due to i/o error."

    However, it works with an interactive control visa and this is where I am confused!

    Here is my setup:

    -Labview 2011 assessment

    -VISA 5.1.2

    KUSB - 488B with the associated drivers (adapter USB to GPIB of Keithley)

    Because I can speak with my instruments in visaic, I guess the installation of drivers for the Keithley interface is ok.

    Trace IO NOR I see beeing of commands passed through Labview to VISA so that they "see" between them.

    I found a thread where someone had the same problem and its solution was downgrade to Labview 8.5.1, which is not possible for me.

    http://forums.NI.com/T5/instrument-control-GPIB-serial/Keithley-2700-driver-problems/TD-p/1474212/PA...

    You have an idea to solve this problem?

    Kind regards

    Baptist

    Here's a follow-up on this issue.

    I tried with Labview 32-bit on main machine: it works.

    The pleasure is that I have to use Labview 64-bit.

    So the ultimate solution is now to run a client and a server of visa on the machine: Labview 32 bit can directly access my resources GPIB, Labview 64-bit must go through the closure of the network.

  • SSL/tls over TCP using tcplistner socket or a tcpclient

    I am trying to use ssl/tls, TCP, but in my code, the socket is used not a tcpclient or tcplistner. I searched on the net at least 200 links but I have not everything related that. I want to use less coding and fact ssl or tsll during the tcp socket connection. I have a client, server, certification authority, a key to the .key format. Please help with the example.

    Hello

    TechNet support team can solve your problem correctly since your question is beyond the scope of what is generally answered here.

    Kind regards.

  • BlackBerry Smartphones IMAP for GMail unavailable through Config BIS

    Hello

    I'm trying to configure my BB Curve (Verizon) use IMAP of Gmail via BIS email setup site. I read the instructions & scanned through the forum, but could not find an answer.

    In accordance with the instructions, on the BIS website, I'm supposed to check the box "I'll give you the settings to add this email account", so that I can specify the address of mailserver IMAP.gmail.com, however, this option is not available when I edit or I have add the email account.

    Any help would be appreciated, thanks.

    Neil

    Try this and it will work: instead of your gmail address em enter [email protected] and some pw. This will faill and take you to the screen where you am I'll give you setiings, so this is my work email, then you enter correct gmail address in the user name and email and IMAP.gmail.com field for server and it will work.

  • Communication through MAX with equipment series

    I use a converter RS 232 to USB to communicate with a gas Analyzer. I want to communicate using the C-link protocol to communcate with the Analyzer, but I cannot do this through Labview and MAX. In the manual of the machine, it is said that control of the aircraft have first the ASCII, code 128 character and its id to the instrument, which, in my case, is 43, which means that the command should start with ASCII character code 171. Then, each statement must end with a carriage return. I tried several different ways to send these commands but in MAX, I get an error in time-out for the series in Labview and VISA Communicater, I get an error on the property node (I used the basic series write read provided vi).

    Can someone help me on? I'm not really sure how to send these commands properly to the analysers.

    You send the characters 'C' and 'R '. This isn't at all the same that the CR control code. You might have used the cast to send hexagonal 0d, you can use the constant CR on the palette of the chain, you could set the string to display hexadecimal constant and send D 0, you can use the constant string defined for '-' display the Codes and \r to send.

  • Real-time TCP/IP communication

    Hello

    I use the following materials:

    SMU-1062 q

    SMU-8108

    OR PXI-5600 (02 card for 40 MHz of bandwidth)

    SMU-5641R (two entries are used; one for each NI PXI-5600)

    PMA-1115

    LabVIEW 2009

    I use the mode of the instrument to detect the signal to jump and write in a spreadsheet in real time.

    My question is that how can I transfer data on LAN in real-time to create a waveform in software on a remote computer before writing it to the worksheet.  I'm looking for something like the time communication real TCP/IP. I enclose my VI. Kindly guide me that how can I do this?

    Thank you and best regards,

    Rashid

    Hey Rashid,.

    Check out this tutorial with examples and let me know if it helps.

  • Best practices of coverage (BISB, TCP, WIFI)


    "What are treated transparent (as BISB is available) BISB switching and cell and then again to WIFI if coverage is.

    Good question.  I think I understand, although I've never directly tested this or asked the question of the RIM, is that switching is handled transparently.

    "If then WIFI and BISB went I need to stop the current connection to execution and establish a new for TCP DIRECT e.g. and then listen for change of status to find out when I can switch back"

    Fix in my experience.  The connection will throw an Exception.

    "you always come immediately if CoverageListener indicates changes".

    We do not have, but we have links relatively short (we do not hold the plug), so every socket connection will establish its "linkable" route and use it throughout his life.

    Note that I doubt that there is any value to fall back to direct TCP, BIS-B is not available.  The only circumstance where I think that it might actually have value if there is a failure in the RIM infrastructure that supports BIS - B.  It happens, but not so often.  Most of the time when your BIS-B connection is broken, I suspect it will actually because you have lost wireless connectivity, so there is little value in attempting to connect through direct TCP - you use just battery...

    For direct TCP should only be necessary when there is no BIS - B.

    I hope this helps.

  • How to prevent a TCP connection that is closed when the VI who opened it terminated.

    Hello everyone.

    I'm developing an application based on the servers and clients communicate through TCP in LabVIEW 2012.

    When the Server/client opens a TCP connection, it starts an asynchronosly running "Connection Manager", to which connection reference that takes so all communication happening. It all works very well.

    -J' have a situation where a client connection manager can be informed of another 'new' server. I would like to open the connection (to see if it is still valid) and then pass this reference of connection to the main client code to spawn a new connection manager. This avoids lock me up the Client code main with an ish timeout if the 'new' server does not really accept connections.

    The problem is that if the connection manager that opens the connection to the 'new' server is stopped, then it seems to destroy the reference he opened. This means that the other connection manager that has been happily character with the 'new' server has closed TCP communications (I get an error code 1 on an entry).

    I created an example to illustrate the issue which should be used as follows:

    1 run server.vi - he will listen for a connection on the specified port on his comics.

    2. run Launcher.vi CH - it will open a connection to the server and pass the TCP reference to an instance of connection Handler.vi, which he started.

    3. the connection manager needs to send data to the server

    4. stop the Launcher.vi CH

    5. the will of Handler.vi connection error.

    Any suggestion would be appreciated.

    See you soon

    John

    Do not perform the opening and closing of the TCP connection in Subvi. Do this to master VI.

  • event for broadcasting images of TCP/IP

    Hi all

    My request has currently 2 devices using TCP/IP on stream of framework to 100ms and 50ms data refresh to a PC. I would like to change the polling for data to generate an event when the data arrives, but I'm not sure how to proceed. I have currently 2 devices streaming via TCP/IP to a routine of labview with 2 loops and they seem to work as expected but I must question currently. The situation is not ideal and will not improve once I have 5 or 6 devices TCP/IP all managers of production at different rates.

    I previously used visa for data series and fell on the function of the event for the series that has greatly improved my behavior of codes once I got rid of my quick polling loop.

    I searched for a solution, but so far I can only find the VISA > advanced > range of event management that seems to support most of the types of communications except TCP/IP (I hope I'm wrong). I also vaguely remember a conversation where the queues or the declarant could be configured to provide the equivalent of an event for the recovery of the data.

    I guess that theres a certain many other means to produce something that looks like an event.

    Advice appreciated.

    Concerning

    Chris

    I don't know of anyway to raise an event when the TCP data arrives, but I don't know why you need to do. No need to question the TCP connection, just to set a long (or even infinite) time and wait for the data to come to you. Keep a copy of the refnum of connection TCP somewhere else, so if you need to kill TCP playback, you can do so by closing the TCP connection (which can cause the TCP Read return an error).

    If you want to generate an event of this, you could feed the chain you read TCP read in a user event.

    If you need to handle an unknown number of connections and you want not to loop through all, mark, each of them, you can instead create a reentrant VI and launch a new instance of it for each TCP connection. That said, I've never had a problem with the run-up to the election on several connections, and I have used this template a bit.

  • Connect two targets in real time via TCP/IP

    Hello everyone

    I need to connect two targets of RT on TCP/IP protocols

    I have two sbRIO Council related to a single host PC through an Ethernet router

    and I have two IP address of these two targets, how do I RT - RT ping using the TCP/IP protocol...

    Thank you

    Syed irfan

    irfan789 wrote:

    As I am with RT if the IP address of the two targets has a role to play in this communication via TCP/IP

    In order to open a TCP connection, you must provide the IP address of the remote computer. It does not matter what operating system, the remote computer is running. If that does not meet your question, so I don't understand what you're asking.

  • How to record images of 8 bits of a TCP connection with a smart camera

    Hello my name is Cris and I try to record images 8-bit generated from a Smart Camera NI 1742, which has a frame rate up to 60 images per second. I want pictures of flow time I need and save each image. I've currently implemented the next VI I found in this article: Images streaming of a Vision Compact to a local AVI system , one of my goals was the next, can save an AVI file and now I can do it. According to this article on the screws flattens the images for data of type string, and sends the data to the local computer (PC) through TCP/IP communication (because data can be stored inside the smart camera).  Then, the Local.vi (shown in the figure), on the computer local Windows, receives the string data, it unflattens back to images and records the images in an AVI file. So my question is how can I proceed to receives the string data and save it directly to files with names like 0001.jpg 0002.jpg, etc., automatically instead of using framework for writing to AVI?. I think to use the IMAQ write string that returns a string that contains the entire contents of the image encoded as an image file and the string can be saved to the file (without unflatten it). How can I change the Local.vi?

    Any help, comments help a lot. Thank you.


  • Windows 7 64 - bit open TCP and UDP ports

    Well im clearly online but when I open original (battlefield 3) that it says im offline, so I spoke with the original technology and they gave me 2 hours of bs to do and then he said that I had to open the ports and they sent me a link for 32 bit windows (https://help.ea.com/article/opening-tcp-or-udp-ports-for-connection-issues.) I told them I did not 'my network places' and they didn't know why... I told them it was 64-bit another 5 - 6 times and they kept on trying to make me do the 32-bit installation. idk why. but in any case, I searched google and could not find an answer that is not covered in random bs or my 64-bit windows did not have this which is suppose to be on the list.

    Step 3 is not there? I got a list or change the settings of the licensed features... He didn't add the port!

    for example

    Method 2: Configure your system to allow access to the game servers. The firewall or the router must allow unrestricted communication on TCP and UDP Port number 3724. World of Warcraft (WoW) game client uses TCP whereas Voice Chat features use UDP. To open a port in Windows Firewall:

    1. open the Windows Firewall by clicking Start , clicking Control Panel, clicking Security, and then clicking on Windows Firewall.

    2. click allow a program through Windows Firewall.  If you are prompted for an administrator password or a confirmation, type the password or provide confirmation.

    3. click on the port of Add. {THIS ISN'T ON MY PC}

    4. in the name box, type a name that will help you remember what the port is used.

    5. in the Port number box, type the port number IE 3724

    6. click on TCP or UDP, depending on the Protocol.

    7. to change the scope of the port, click Change scope, and then click the option that you want to use. ("Scope" refers to the set of computers that can use this port opening).

    So im hoping you guys can link me to a up to this way to change the ports that will be on my windows 7 64 bit

    Hi Fostard,

    If I understand well you face any problem with not able to connect to the internet.

    I understand that it must be frustrating, but don't worry, we are here to help solve the problem and guide you in the right direction.

    You can go through the steps from the link and check if it helps.

    Hope this information was helpful and let us know if you need more assistance. We will be happy to help you.

  • Why TCP tunneling removes the 503 of the asynchronous call WS http response?

    Hi all

    I am facing a weird problem.
    I have developed and tested an asynchronous BPEL process which, among other things, invoke a 3rd party web service.
    It works very well in the development environment.
    When I migrates to the test environment for clients, I get an error http 503 in the BPEL process (the only difference in the BPEL code is WS endpoint).
    Try to understand what happened, I used a tunnel through TCP monitor. This solves the problem!

    So why go through a TCP control running using the BPEL server?
    Continuing with TCP monitor in production is obviously not an option, so not only that I have to understand why using a TCP my help, but also find a way to fix the underlying issue.

    I should mention that I use BPEL version 10.1.3.3, and I've tried the connection between the BPEL server and 3rd party web service and not a problem.

    Any help is very appreciated.
    Kind regards
    Aagaard

    Published by: Aagaard on March 23, 2009 09:48
    In Metalink in "TCP Tunneling the Oracle BPEL Process Manager" (283484.1 document id) it is proposed to change the ownership of the 'opt-SOAP-shortened' in the 'Manage BPEL domian"from false to true if you want to use TCP tunneling.
    I don't see this property in the BPEL console or in the domain.xml file in $ORACLE_HOME/bpel/areas / < used domain > / config.
    This would be part of the problem?
    The BPEL server in the customer test environment is a clone of the BPEL server in our development environment, so I don't see how this could be the problem.

    Just to think logically, he cannot be firewall as SOAP communicates vi the http remote server port. It has nothing to do with the installation of BPEL.

    19313 should be only one communication port.

    The main thing to look at is TCP LUN act as a proxy in some way? My understanding of the app is there's some monitors.

    Also when you test the browser have you disabled all proxies?

    As mentioned above the HTTP503 establishes a connection, but it is unable to complete for some reason such as timeout, which could have been caused, but load.

    see you soon
    James

  • Re: tcp ip

    Guys pls help me because I am facing a problem when communicating via the TCP/IP protocol.

    I made a main VI and screw Sub that communicate via the TCP/IP protocol. Individually hand VI and SubVIs properly while communicating via TCP/IP. But when I'm integrating all the SUB screws inside the hand of VI and to run the program, only the main VI is able to communicate via TCP/IP not the SUB screw (by clicking on the button for the specific SUB VI).

    Pls help me to locate the problem and give me the solution for this.

    Thanks in advance

    Guys pls help me because I am facing a problem when communicating via the TCP/IP protocol.

    I made a main VI and screw Sub that communicate via the TCP/IP protocol. Individually hand VI and SubVIs properly while communicating via TCP/IP. But when I'm integrating all the SUB screws inside the hand of VI and to run the program, only the main VI is able to communicate via TCP/IP not the SUB screw (by clicking on the button for the specific SUB VI).

    Pls help me to locate the problem and give me the solution for this.

    Thanks in advance

Maybe you are looking for