You are on page 1of 13

1. Write an echo program with client and iterative server using TCP.

// Server

import java.io.*;
import java.net.*;

publicclass EServer
{
publicstaticvoid main(String[] args) throws IOException
{

ServerSocket S = new ServerSocket(3000);

while(true)
{
Socket Client = S.accept();

InputStream in = Client.getInputStream();

DataInputStream Dis = new DataInputStream(in);

System.out.println(Dis.readUTF());

Client = new Socket("localhost",4000);

BufferedReader buff = new BufferedReader(new InputStreamReader (System.in));

String Str = buff.readLine();

OutputStream out = Client.getOutputStream();

DataOutputStream Dos = new DataOutputStream(out);

Str = "Server Says :: " + Str;

Dos.writeUTF(Str);

Client.close();

// Client

import java.io.*;
import java.net.*;
import java.util.*;

publicclass EClient
{
publicstaticvoid main(String[] args) throws IOException
{
Socket C = new Socket("localhost",3000);
BufferedReader buff = new BufferedReader(new InputStreamReader (System.in));
String Str = buff.readLine();

OutputStream out = C.getOutputStream();

DataOutputStream Dos = new DataOutputStream(out);

Dos.writeUTF("Client Say :: " + Str);


Dos.flush();
ServerSocket S = new ServerSocket(4000);
Socket Client = S.accept();
InputStream in = Client.getInputStream();
DataInputStream Dis = new DataInputStream(in);
System.out.println(Dis.readUTF());
Client.close();
}
}

OUTPUT :

========= Client ============

C:\jdk1.1.3\bin>javac EClient.java

C:\jdk1.1.3\bin>java EClient
hi, how are you Server?
Server Says :: Fine, Thankyou. Bye.

2.Write an echo program with client and concurrent server using UDP.

import java.io.*;
import java.net.*;

publicclass EServer
{
publicstaticvoid main(String[] args) throws IOException
{

ServerSocket S = new ServerSocket(3000);

while(true)
{
Socket Client = S.accept();

InputStream in = Client.getInputStream();

DataInputStream Dis = new DataInputStream(in);

System.out.println(Dis.readUTF());

Client = new Socket("localhost",4000);

BufferedReader buff = new BufferedReader(new InputStreamReader (System.in));

String Str = buff.readLine();

OutputStream out = Client.getOutputStream();

DataOutputStream Dos = new DataOutputStream(out);

Str = "Server Says :: " + Str;

Dos.writeUTF(Str);

Client.close();

}
Output:
========= Server =============
C:\jdk1.1.3\bin>javac EServer.java

C:\jdk1.1.3\bin>java EServer
Client Say :: hi, how are you Server?
Fine, Thankyou. Bye.
ServerThread:

3.Write an echo program with client and concurrent server using UDP.
while true:
serverLock.acquire()

if numberOfRequests < MAX_REQUESTS:


packet = socket.receive()
numberOfRequests++
requestThread(packet).run()
else
serverMonitor.wait(serverLock);

serverLock.release()

requestThread:
//handle packet

serverLock.acquire()

if numberOfRequests == MAX_REQUESTS:

numberOfRequests--
serverMonitor.pulse();

serverLock.release()

OUTPUT :

========= Client ============

C:\jdk1.1.3\bin>javac EClient.java

C:\jdk1.1.3\bin>java EClient
hi, how are you Server?
Server Says :: Fine, Thankyou. Bye.

4.Write a client and server program for chatting.


import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketAddress;
import java.util.ArrayList;

public class Main {


public static void main(String[] args) throws IOException {
try
{
final int PORT = 6677;//SET NEW CONSTANT VARIABLE:
PORT
ServerSocket server = new ServerSocket(PORT); //SET
PORT NUMBER
System.out.println("Waiting for clients...");//AT
THE START PRINT THIS

while (true)//WHILE THE PROGRAM IS RUNNING


{
Socket s = server.accept();//ACCEPT
SOCKETS(CLIENTS) TRYING TO CONNECT

System.out.println("Client connected from " +


s.getLocalAddress().getHostName()); // TELL THEM THAT THE
CLIENT CONNECTED

Client chat = new Client(s);//CREATE A NEW


CLIENT OBJECT
Thread t = new Thread(chat);//MAKE A NEW THREAD
t.start();//START THE THREAD
}
}
catch (Exception e)
{
System.out.println("An error occured.");//IF AN
ERROR OCCURED THEN PRINT IT
e.printStackTrace();
}
}

Output:
Waiting for clients...
Client connected
5.Write a program to retrieve date and time using TCP.

import java.net.*;
import java.io.*;
import java.util.*;

class SocketTime01{
public static void main(String[] args){
String server = "www.yourFavoriteServer.com";
int port = 13; //daytime port

try{
Socket socket = new Socket(server,port);//get socket

BufferedReader inputStream =
new BufferedReader(new
InputStreamReader(

socket.getInputStream()));
//Get an input stream from the socket

System.out.println(inputStream.readLine() +
" at " + server);//receive and display

socket.close();
}//end try
catch(UnknownHostException e){
System.out.println(e);
System.out.println(
"Connection Failure. Are you online?");
}//end catch UnknownHostException
catch(IOException e){System.out.println(e);}
}//end main
}//end class SocketTime01

Output:

6. Write a program to retrieve date and time using UDP.

import java.io.*;

import java.net.*;

class UDPClient
{
public static void main(String args[]) throws Exception
{
BufferedReader inFromUser =
new BufferedReader(new InputStreamReader(System.in));

DatagramSocket clientSocket = new DatagramSocket();


//Client Socket is created

InetAddress IPAddress = InetAddress.getByName("localhost");


//Gets the IP Address

byte[] sendData = new byte[1024];


byte[] receiveData = new byte[1024];

String sentence = inFromUser.readLine();


sendData = sentence.getBytes();
//sends data

DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress,


9876);
clientSocket.send(sendPacket);

DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);


clientSocket.receive(receivePacket);

String modifiedSentence = new String(receivePacket.getData());


System.out.println("FROM SERVER:" + modifiedSentence);
clientSocket.close();
}
}

//Server Side:
-------------------------------------------------------------------------------------------------------

import java.io.*;
import java.net.*;

class UDPServer
{
public static void main(String args[]) throws Exception
{
DatagramSocket serverSocket = new DatagramSocket(9876);
//Server Socekt Created

byte[] receiveData = new byte[1024];


byte[] sendData = new byte[1024];
while(true)
{
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.len
gth);
serverSocket.receive(receivePacket);
String sentence = new String( receivePacket.getData());
System.out.println("RECEIVED: " + sentence);

InetAddress IPAddress = receivePacket.getAddress();


int port = receivePacket.getPort();

String capitalizedSentence = sentence.toUpperCase();


//Change sentence to Capital letter
sendData = capitalizedSentence.getBytes();

DatagramPacket sendPacket =
new DatagramPacket(sendData, sendData.length, IPAddress, port);
serverSocket.send(sendPacket);
//Send Capitalized data back to client
}
}
}
Output:

7.Write a client and server routines showing Blocking I/O.


/create initial I/O completion port with the number of worker threads
hCompletionPort = CreateIoCompletionPort(INVALID_FILE_HANDLE,
NULL, 0, nWorkerThreads);
if( hCompletionPort == NULL){
return GetLastError();
}
//Add a file handle for the I/O completion to watch
hCompletionPort1 = CreateIoCompletionPort( hFile, hCompletionPort,
dwCompletionKey, nWorkerThreads);
if( hCompletionPort1 == NULL ){
return GetLastError();
}
//perform Non-Blocking read so GetQueuedCompletionStatus can notify
// us when the read has completed.
nRet = WSARecv(hFile, lpBuffers, dwBuffCount, &dwBytesReceived,
&dwFlags, &OverLapped, NULL);
if( nRet != 0 ){
return WSAGetLastError();
}
//block on GetQueuedCompletionStatus until the I/O operation completes.
// The I/O will be in the buffer specified supplied in WSARecv
nRet = GetQueuedCompletionStatus(hCompletionPort, &dwBytesReceived,
&dwCompletionKey, &OverLapped, TIME_OUT);
if( nRet == 0 && GetLastError() != WAIT_TIMEOUT){
return GetLastError();
}

Output:
Hi

8. Write a client and server routines showing I/O multiplexing.


/ Get Handle to the /dev/poll device
if ((fd = open("/dev/poll", O_RDWR)) < 0) {
return EPERM;
}
//create a pollfd structure large enough to hold all file
// descriptors that will be watched
pollfd = (struct pollfd* )malloc(sizeof(struct pollfd) * MAXBUF);
if (pollfd == NULL) {
close(fd);
return ENOMEM;
}
// Setup dev poll to watch for I/O events from file descriptors
for (i = 0; i < nFileDescriptorCount; i++) {
pollfd[i].fd = fds[i];
pollfd[i].events = POLLIN;
pollfd[i].revents = 0;
}
if (write(fd, &pollfd[0], sizeof(struct pollfd) * MAXBUF) !=
sizeof(struct pollfd) * MAXBUF) {
perror("failed to write register file descriptor with /dev/poll");
close (fd);
free(pollfd);
return EBADF;
}
// Get I/O and events from the
dopoll.dp_timeout = -1;
dopoll.dp_nfds = MAXBUF;
dopoll.dp_fds = pollfd;
nDescriptorsSignalled = ioctl(wfd, DP_POLL, &dopoll);
if (nDescriptorsSignalled < 0) {
perror("/dev/poll ioctl DP_POLL failed");
close (fd);
free(pollfd);
return EINVAL;
}
while( nDescriptorsSignalled-- ) {
read(dopoll.dp_fds[i].fd, rbuf, STRLEN);

}
Output:
Hi
9.Write an echo client and server program using Unix domain stream socket.
# Echo server program
import socket,os

s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
try:
os.remove("/tmp/socketname")
except OSError:
pass
s.bind("/tmp/socketname")
s.listen(1)
conn, addr = s.accept()
while 1:
data = conn.recv(1024)
if not data: break
conn.send(data)
conn.close()

# Echo client program


import socket
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
s.connect("/tmp/socketname")
s.send('Hello, world')
data = s.recv(1024)
s.close()
print 'Received', repr(data)

Java:
/* Client: how do you mention the /tmp/socketname? */
public static String localsendTCPBytes(String bytes) throws IOException {
String downloaded = null;
Socket socket = new Socket("localhost", 58888);
DataOutputStream upload = new DataOutputStream(socket.getOutputStream());
BufferedReader download = new BufferedReader(new
InputStreamReader(socket.getInputStream()));

String caps = bytes;


upload.writeBytes(caps);
upload.flush();
String get;
downloaded = download.readLine();
System.out.println("[TCP]: downloading: " + downloaded);
socket.close();
return downloaded;
}

Received

downloaded

10. Write an echo client and server program using Unix domain Datagram socket.

import java.net.*;
import java.io.*;
public class InetExample {
public static void main(String [] args) {
printLocalAddress();
Reader kbd = new FileReader (FileDescriptor.in);
BufferedReader bufferedkbd = new BufferedReader (kbd);
try {
String name;
do {
System.out.print(host name or IP address: );
System.out.flush();
name = bufferedkbd.readLine();
if(name!=null)
printRemoteAddress (name);
} while (name!=null);
System.out.println(exit);
}
catch(IOException ex) {
System.out.println(Input error: );
ex.printStackTrace();
}
}
Output:
Error

//static void printLocalAddress()...


//static void printRemoteAddress(String name)...,
}

11. Write a client and server program to implement file transfer.


import java.net.*;
import java.io.*;

class MyServer
{
ServerSocket ss;
Socket clientsocket;
BufferedReader fromclient;
InputStreamReader isr;
PrintWriter toclient;

public MyServer()
{
String str = new String("hello");
try
{

// Create ServerSocket object.


ss = new ServerSocket(1244);
System.out.println("Server Started...");
while(true)
{
System.out.println("Waiting for the request...");

// accept the client request.


clientsocket = ss.accept();

System.out.println("Got a client");
System.out.println("Client Address "+
clientsocket.getInetAddress().toString());
isr = new InputStreamReader(clientsocket.getInputStream());
fromclient = new BufferedReader(isr);

toclient = new PrintWriter(clientsocket.getOutputStream());

String strfile;
String stringdata;
boolean file_still_present=false;

strfile = fromclient.readLine();

System.out.println(strfile);
//toclient.println("File name received at Server is "+strfile);

File samplefile = new File(strfile);


FileInputStream fileinputstream=new FileInputStream(samplefile);
// now ready to send data from server .....
int notendcharacter;
do
{
notendcharacter=fileinputstream.read();
stringdata=String.valueOf(notendcharacter);
toclient.println(stringdata);

if(notendcharacter!=-1)
{
file_still_present=true;
}
{
file_still_present=false;
}
}while(file_still_present);
fileinputstream.close();
System.out.println("File has been send successfully .. message print
from server");

if(str.equals("bye"))
{
break;
}

fromclient.close();
toclient.close();
clientsocket.close();
}
}
catch(Exception ex)
{
System.out.println("Error in the code : " + ex.toString());
}
}

public static void main(String arg[])


{
MyServer serverobj = new MyServer();
}
}

Output:

Hello

Waiting for the request

Connection created

12. Write a client and server program to implement the remote command execution

import com.sshtools.j2ssh.SshClient;
import com.sshtools.j2ssh.authentication.PasswordAuthenticationClient;
import com.sshtools.j2ssh.session.SessionChannelClient;
import com.sshtools.j2ssh.session.SessionOutputReader;
import com.sshtools.j2ssh.transport.IgnoreHostKeyVerification;
final private String username = "root";
final private String password = "pvadmin";
final private String hostname = "172.31.50.102";
private int outputPos = 0 ;
ssh = new SshClient();
try{
ssh.connect(hostname, new IgnoreHostKeyVerification());
PasswordAuthenticationClient pwd = new PasswordAuthenticationClient();
pwd.setUsername(username);
pwd.setPassword(password);
int result = ssh.authenticate(pwd);
f (result == 4)
{
logCat.info("Connected to host");
session = ssh.openSessionChannel();
sor = new SessionOutputReader(session);
boolean requestPseudoTerminal(String term, int cols, int rows, int width, int
height, String modes)

if (session.startShell())
{
in = (session.getInputStream());
logCat.info(in);
out = session.getOutputStream();
out.write("cd opt/3com/vcx/vcxdata/\n".getBytes());
out.write("ls\n".getBytes());
out.write("su cworks\n".getBytes()); // input command su cworks
out.write("su root\n".getBytes());
// then input command su root which will claim password

Thread.currentThread().sleep(1000*2);
//verify what we have got
String answer = null;
String aux = null;
aux = sor.getOutput(); // get the output in real time
answer = aux.substring(outputPos);
outputPos = aux.length();
logCat.info(answer);
String str[] = answer.split("\n");
String prompt = str[str.length-1]; // get the last prompt
prompt = prompt.trim();
if (prompt.contains("Password:"))
// if the last prompt is "password
{
// then we input password.
out.write("pvadmin\n".getBytes());
}
Output :
Connected host

You might also like