Skip to main content

Linux socket in C and Java

    Finally, I found good reason to practice on Java. First, start with Linux network socket. 

    I'm using Windows OS, so I setup AWS EC2:AMI to be the developing VM. Installing development tools is required:

For C: sudo yum groupinstall "Development Tools"
For Java: sudo yum install java-devel

    I worked on Linux socket in my early IT career path. I love cloud computing and admire its greatness. Does it mean I adore technology more than humanity? No. Both are fair. How about thinking in this way: 

Technology paves the way to listen to everyone who has access to it. No matter you're rich or poor, old or young, brilliant or stupid. 

    IT doesn't make decisions; the people behind IT do. If the administrator decides to silence/filler out  certain information or opinions, it’s nothing different from you sending inquiry to the court, petitions to the government, complaints to customer services, even the advice to your parents/children. But to developers, we need data and suggestions from who needs help but not yet be taken care of. Developers don't want to create things that no one wants and never see the daylight. IT is not only technology. Especially cloud computing, IT is an accumulation of all involved, including humanity and opinions from the general public.

    Back to socket. The workflow in C is almost identical to Java, except Java only use one line to setup a socket! 
    Here is the C version on setup server side. Server need to bind a port for listen()

    For the client side, setting the server information and then connect to it.

    I wrote Java is almost the same way, except using while loop to extend the communication. 
    On the server side

  
    On the client side, I picked the setup of I/O. Java takes I/O seriously, if asking my opinion to Java. I like Java because it introduced try/catch first. It's very useful for debugging. I like C style more because C has access to memory. It's not safe, I knew. But it is easier to redesign data as meta or image. (and also easy to be messed up... unfortunately. It might be why Java is attractive to me.)




    Why I mentioned Linux socket is easy, there is the comparison:


    You need to create an interface and a class as a library. Then a host to create the service. And then search local hosting service to add to client's reference, and external application svcutil.exe to create the base information for your client application. The client is using a class (here is named CalculatorClient) you  have never named it but the application merci you a name....

    Wrap up for now. See you next time~ 

Comments

Popular posts from this blog

Guide to Preserving HuggingFace Models in Google Colab Environments

Conclusion:  Step 1:  find the model path: ls ~/.cache  Step 2:  Copy the entire folder to Google Drive:  Step 3:  Set model path to the subfolder under snapshot: My Story: I initially began exploring Generative AI (GAI) and Google Colab through Stable Diffusion. In the past, as I mainly wrote server services and console applications, I was less familiar with data science modes like R and Jupyter that can maintain a paused state. I didn't quite understand the heavy burden on Colab of creating a temporary Stable Diffusion WebUI with .ipynb, as suggested by popular guides. I just found it troublesome that connections often took a long time and then dropped, requiring a restart. Recently, while testing new versions of the Stable Diffusion model, and facing challenges due to Colab's policies making various versions of WebUI difficult to run successfully, I started researching how to write my own test programs in Colab. Eventually, I understood that Colab is ess...

docker: storage and services

Docker Volume Without going through Docker, accessing files within a Docker image is not easy. Therefore, Docker has a volume feature that allows users to specify the location on the host file system to serve as the access directory for Docker. In other words, a volume is the NFS of a Docker image. Example: Using a volume to store SQLite files. ref:  SQLite for NodeJS: https://www.sqlitetutorial.net/sqlite-nodejs/ Initialize the project. # Setup ExpressJS framework express --view=pug 240324_ejs_sqlite_docker npm init npm install express npm install sqlite3 Test: npm start Initialize docker  Since the directory already contains NodeJS, the Docker Daemon will assist in the setup. Create new docker image docker build -t atfuture7/sqlite01 . Create a folder for Docker, create a container, run it.  mkdir docker_vol docker run -p 3000:3000 -v ./docker_vol:/data --name exp_sqlite atfuture7/sqlite01 After confirming that the container can run co...

Review old/new stuff: Angular 17

When I reviewed Angular recently, I discovered that it had just undergone a major revision three months ago, v17. The notes here are summaries of common features incorporated into v17. Install Angular ref: https://angular.io/guide/setup-local npm install -g @angular/cli Create new project ng new proj_name cd proj_name If the old project needs to be migrated to v17 control flow: ref: https://youtu.be/36Hcx7kRYDg?si=pmZcRkQHIlmguK3K ng generate @angular/core:control-flow Activate  ng serve Data Flow ref: https://angular.io/tutorial/first-app/first-app-lesson-09 Service can be regarded as a custom class (similar to custom modules written in expressJS) ng generate service obj_name In the sample program, enumeration of array is used. this.housingLocationList.find(housingLocation => housingLocation.id === id); The concept is  find( function(element) => { return (condition; )}) ref:  https://developer.mozilla.org/en-US/docs/Web/JavaScript...