Skip to main content

Network Programming - Part 2

Okay, Continuing the  part 01 of this set. Let's get on with the practical side. Here I'll be using Java as the language and lets look at socket Programming.

First things first some analogies

What is a socket?

Socket is an end point actually. This end point need to be there for some communication to happen. If not the sender will not know where to  connect or not. Socket is the combination of the IP address and the Port no. the IP address determines the computer and the Port determines the Protocol and the application.

Then what is a Port?

When an application runs on the computer a specific address is located for it. This specific address or the PORT can ether be TCP or UDP (Two Transport layer protocols). A port can have any number between 0 - 65,535. The port numbers below 1024 are most frequently used so if you are creating a custom application just use something above 1024. 

TCP vs UDP

TCP is for Transmission Control Protocol and UDP is for User Datagram Protocol. TCP is connection oriented and UDP is connectionless protocol. The packet size of TCP is larger than the UDP. TCP does error cheching and UDP does too but no recovery mechanism since of the conectionless orientation. 

Before gong into some real programming the below diagram shows the flow of connecting a server and a client in TCP.




So That's it with the basic terminology lets do some Socket programming.

First Thing I'm gonna do is to create a Simple Server which outputs the Date and Time and connect using Telnet.

Its easy to remember the process in 3 simple steps

  1. Open the server Socket
  2. Wait for someone (Client) to connect to the server
  3. Communication - Data input and output




import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;

public class MySimpleServer {
    public static void main(String[] args) {
        //Step 01: Create and open server Socker
        
        try {
            ServerSocket server = new ServerSocket(9000); //Create a server Socket with socket no 9000
            Socket client = server.accept(); // waiting for the Client to accept the server connection
            Date d = new Date();
            DataOutputStream ds = new DataOutputStream((client.getOutputStream()));
            ds.writeBytes(d.toString());
            client.close(); // remember to close the connection
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


This is the simple code to start a Simple server the intended outcome is to output the date and time.
Lets see how to connect using telnet client in Windows.

01) Make sure you have enabled Telnet Client in windows Features. If not Follow this: https://technet.microsoft.com/en-us/library/cc771275(v=ws.10).aspx

02) Open Command Prompt and Type in >telnet {host} {pot no} Here we use > telnet localhost 9000 (Make sure your code is running)

The below 2 figures will show the respective steps:




Figure 1




Figure 2: Connected and connection terminated.


So that's it and lets meet up with another code.





Popular posts from this blog

Natural Language Processing with Python NLTK part 5 - Chunking and Chinking

Natural Language Processing Using regular expression modifiers we can chunk out the PoS tagged words from the earlier example. The chunking is done with regular expressions defining a chunk rule. The Chinking defines what we need to exclude from the selection. Here are list of modifiers for Python: {1,3} = for digits, u expect 1-3 counts of digits, or "places" + = match 1 or more ? = match 0 or 1 repetitions. * = match 0 or MORE repetitions $ = matches at the end of string ^ = matches start of a string | = matches either/or. Example x|y = will match either x or y [] = range, or "variance" {x} = expect to see this amount of the preceding code. {x,y} = expect to see this x-y amounts of the preceding code source: https://pythonprogramming.net/regular-expressions-regex-tutorial-python-3/ Chunking import nltk from nltk.tokenize import word_tokenize # POS tagging sent = "This will be chunked. This is for Test. World is awesome. Hello world....

Natural Language Processing with Python NLTK part 1 - Tokenizer

Natural Language Processing Starting with the NLP articles first we will try the  tokenizer  in the NLTK package. Tokenizer breaks a paragraph into the relevant sub strings or sentences based on the tokenizer you used. In this I will use the Sent tokenizer, word_tokenizer and TweetTokenizer which has its specific work to do. import nltk from nltk.tokenize import sent_tokenize, word_tokenize, TweetTokenizer para = "Hello there this is the blog about NLP. In this blog I have made some posts. " \ "I can come up with new content." tweet = "#Fun night. :) Feeling crazy #TGIF" # tokenizing the paragraph into sentences and words sent = sent_tokenize(para) word = word_tokenize(para) # printing the output print ( "this paragraph has " + str(len(sent)) + " sentences and " + str(len(word)) + " words" ) # print each sentence k = 1 for i in sent: print ( "sentence ...

Natural Language Processing with Python NLTK part 6 - Named Entity Recognition

Natural Language Processing - NER Named entities are specific reference to something. As a part of recognizing text NLTK has allowed us to used the named entity recognition and recognize certain types of entities. Those types are as follows NE Type Examples ORGANIZATION Georgia-Pacific Corp. ,  WHO PERSON Eddy Bonte ,  President Obama LOCATION Murray River ,  Mount Everest DATE June ,  2008-06-29 TIME two fifty a m ,  1:30 p.m. MONEY 175 million Canadian Dollars ,  GBP 10.40 PERCENT twenty pct ,  18.75 % FACILITY Washington Monument ,  Stonehenge GPE South East Asia ,  Midlothian Source:  http://www.nltk.org/book/ch07.html Simple example on NER: import nltk from nltk.tokenize import word_tokenize, sent_tokenize para = " America is a country. John is a name. " sent = sent_tokenize(para) for s in sent: word = word_tokenize(s) tag = nltk . pos_tag(word) n...