• Skip to main content
  • Skip to footer

B4X

Develop Android, iOS and IoT applications

  • Home
  • Products
    • B4A (Android)
    • B4i (iOS)
    • B4J (Desktop)
    • B4R (Arduino)
  • Showcase
  • Store
  • Learn
    • General
    • Guides
    • Video Tutorials
    • Glossary
  • Teach
  • Blog
  • Community
A B C D F G H J M N Q S T U X

All

TCP

TCP – Transmission Control Protocol, is the most used network-transport layer protocol. Most popular higher level protocols such as HTTP, FTP, POP, SMTP, SSH, MQTT and others are based on TCP.
The other transmission level protocol, relevant for developers, is UDP.
TCP is connection based – stateful, and is reliable. The communication is done using a full duplex stream.
The data will be received in the correct order and exactly as it was sent. If there are any problems then the connection will be broken.
UDP, on the other hand, is connectionless – stateless, and not 100% reliable.

A TCP connection is always done with a connection request that is made by the client to the listening server. The server is identified by its ip address (or host name which is resolved to an ip addres) and port number. The port is a number between 0 to 65535 where 0 – 1023 are usually reserved to the OS.
Once a connection is established, the communication is done between two symmetrical sockets.

The server side is implemented in B4X with the ServerSocket type and the client side with the Socket type. Both belong to the internal Network library. Similar APIs are also available in B4R.

Once a connection is made we can write or read from the stream. We never do it on the main thread. This will cause our apps to freeze. The correct way to do it is with AsyncStreams from the RandomAccessFile library.

Video tutorial:

Networking – TCP / IP from B4X on Vimeo.

Notes:

  • Windows firewall blocks incoming connections by default. You must add a rule if you want to allow clients to connect to the PC.
  • TCP is a low level protocol. In most cases it is a mistake to use it directly. Simpler and “better” alternatives: MQTT and B4J jServer.
  • Example of network communication: https://www.b4x.com/android/forum/threads/b4x-b4xpages-network-asyncstreams-b4xserializator.119011/#content
  • Example of a MJPEG server that supports multiple clients: https://www.b4x.com/android/forum/threads/73792/#content
  • Example of FTP server that supports multiple clients: https://www.b4x.com/android/forum/threads/74320/#content
  • A connection is identified by 4 values: source ip, source port, destination ip, destination port. This means that a server can listen on a single port and allow multiple clients to connect and communicate.

Written by Erel Uziel

Footer

Top

  • Home
  • Products
    • B4A (Android)
    • B4i (iOS)
    • B4J (Desktop)
    • B4R (Arduino)
  • Showcase
  • Store
  • Learn
    • General
    • Guides
    • Video Tutorials
    • Glossary
  • Teach
  • Blog
  • Community

About us

Follow us:

Latest Versions

B4A v10.5 (changelog)
B4i v6.80 (changelog)
B4J v8.80 (changelog)
B4R v3.50 (changelog)

Contact Us

support@basic4ppc.com

Privacy Policy

Privacy Policy

Copyright © 2021 · Anywhere Software. Android is a trademark of Google Inc. iOS is a registered trademark of Apple. Arduino is a trademark of Arduino. Java is a trademark of Oracle.