server socket variable cannot pass to diff function within the same class
I use below code to establish socket and write back string to out1 stream to client .
I accept the socket socket and out1 stream in run() , I use another function p_output_socket() to write back the string to out1 stream , but I find there is nul exception . probably, it is indicate that the server socket variable is null in function
p_output_socket() . It is ok in run function .
Pleae advice how I can pass the current server socket variable to function p_output_socket and use it ???
Below is the code
I accept the socket socket and out1 stream in run() , I use another function p_output_socket() to write back the string to out1 stream , but I find there is nul exception . probably, it is indicate that the server socket variable is null in function
p_output_socket() . It is ok in run function .
Pleae advice how I can pass the current server socket variable to function p_output_socket and use it ???
Below is the code
Code :
import java.io.File;
import java.io.FileInputStream;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.net.*;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.InputStreamRequestEntity;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.DeleteMethod;
import org.apache.commons.httpclient.methods.PutMethod;
import org.apache.commons.httpclient.methods.*;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.*;
import java.lang.Thread.*;
/* below use for http get */
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.http.*;
import java.io.*;
import java.nio.channels.*;
import java.util. * ;
import java.io. * ;
import java.io.RandomAccessFile.*;
import java.io.RandomAccessFile;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.*;
import java.net.URL;
import java.net.URI;
import java.io.*;
import java.sql.*;
import javax.sql.*;
import com.mysql.jdbc.Driver;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class doComms implements Runnable {
public static Socket server;
public static ServerSocket listener;
Thread t;
public static Statement stmt ;
public String line,input,testabc;
// public DataOutputStream out1 ;
public DataInputStream in;
public static PrintWriter out1;
doComms() {
//Socket server;
// ServerSocket listener;
//PrintWriter out1;
//t = new Thread (this,"socket server 4444 run ");
// t.start(); // Start the thread
try {
listener = new ServerSocket(4444);
}
catch ( Exception y ) { y.printStackTrace(); }
}
public void run () {
testabc="123";
input="";
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection ("jdbc:mysql://10.1.1.89:3306/mysql", "root", "123456");
Statement stmt = con.createStatement();
//listener = new ServerSocket(4444);
//Socket server;
doComms connection;
server = listener.accept();
// Get input from the client
System.out.println("Start up socket input stream !!!");
in = new DataInputStream (server.getInputStream());
System.out.println("Start up socket output stream !!!");
//out1 = new PrintStream(server.getOutputStream());
PrintWriter out1 = new PrintWriter(
new BufferedOutputStream(server.getOutputStream(), 1024), false);
//out1 = new DataOutputStream(server.getOutputStream());
ClientHandler abc = new ClientHandler(server);
Thread socserver = new Thread(abc);
socserver.start();
while((line = in.readLine()) != null && !line.equals(".")) {
input=input + line;
if ( line.startsWith("abc") )
{
System.out.println("put ok in out socket in docomms");
out1.println("OK" );
out1.flush();
p_output_socket("testing ok");
}
else
{
System.out.println("put echo in out socket in docomms");
out1.println("echo what I get only :" + line);
out1.flush();
p_output_socket("testing echo ok");
}
}
// Now write to the client
System.out.println("Overall message is:" + input);
p_output_socket("Overall message is:" + input);
server.close();
} catch (Exception e) {
System.out.println("Exception on socket listen: " + e);
e.printStackTrace();
}
}
//below print string to output socket
public void p_output_socket(String a )
{
String input1 = this.input;
String line1 = this.line ;
try
{
//System.out.println("this testabc " + this.testabc );
//System.out.println("this input " + this.input );
//System.out.println("this line " + this.line );
//System.out.println("a is " + a );
String aa =a ;
out1.println( aa );
out1.flush();
}
catch ( Exception e) {
System.out.println("Exception on socket output in DoComms " + e);
e.printStackTrace();
}
}
// above print string to output socket
public static void insert_order_sql (Statement stmt,String v)
{
try {
stmt.executeUpdate("INSERT INTO `o1` (`data` ) " + "VALUES ( '"+v+"' )");
}
catch ( Exception w ) { w.printStackTrace(); }
}
}
0 comments:
Post a Comment