Как отправить данные (в частности, строки) по сети в протоколе TCP с помощью программирования сокетов на java?
на самом деле я хочу, чтобы программа считывала текстовый файл (клиентская машина), а затем отправляла его содержимое серверной программе, где она хранит его в базе данных sql
любые предложения, как я могу это реализовать
спасибо
Что я уже пробовал:
Клиент
import java.io.File; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; import java.util.*; import java.io.*; public class Client { public static void main(String[] args) throws Exception,IOException{ //Initialize socket Socket socket = new Socket(InetAddress.getByName("LINUXSERVER"), 5000); byte[] contents = new byte[10000]; File file = new File("d:\\test.txt"); Scanner fis = new Scanner(file); //BufferedInputStream bis = new BufferedInputStream(fis); String temp,temp1=""; Vector v = new Vector(); while(fis.hasNext()){ temp = fis.next(); for(int i =0;i<temp.length();i++){ if(temp.charAt(i)!=',' && temp.charAt(i)!=';'){ temp1 = temp1+temp.charAt(i); } else{ v.addElement(temp1); } } } //Get socket's output stream OutputStream osw = socket.getOutputStream(); Iterator itr = v.iterator(); while(itr.hasNext()){ String temp2 = String.valueOf(itr.next()); byte senddata[] = temp2.getBytes("UTF-8"); System.out.print(senddata.toString()); } //Read File Contents into contents array //byte[] contents; /*long fileLength = file.length(); long current = 0; long start = System.nanoTime(); while(current!=fileLength){ int size = 10000; if(fileLength - current >= size) current += size; else{ size = (int)(fileLength - current); current = fileLength; } contents = new byte[size]; //bis.read(contents, 0, size); os.write(contents); System.out.println("Sending file ... "+(current*100)/fileLength+"% complete!"); } */ osw.flush(); //File transfer done. Close the socket connection! socket.close(); System.out.println("File sent succesfully!"); } }
Сервер
import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import java.io.*; public class Server1 { public static void main(String[] args) throws Exception { //Initialize Sockets ServerSocket ssock = new ServerSocket(5000); System.out.println("Server Started"); System.out.println("Waiting For Client..."); Socket socket = ssock.accept(); System.out.println("Client Connected Now Recieveing.."); //The InetAddress specification InetAddress IA = InetAddress.getByName("192.168.0.110"); byte[] contents = new byte[10000]; //Initialize the FileOutputStream to the output file's full path. FileWriter fos = new FileWriter("d:\\1\\test.txt"); BufferedWriter bw = new BufferedWriter(fos); PrintWriter pw = new PrintWriter(bw); //BufferedOutputStream bos = new BufferedOutputStream(fos); InputStream is = socket.getInputStream(); //No of bytes read in one read() call int bytesRead = 0; while((bytesRead=is.read(contents))!=-1){ //bos.write(contents, 0, bytesRead); pw.write(String.valueOf(bytesRead)); } pw.flush(); //bos.flush(); socket.close(); ssock.close(); System.out.println("File saved successfully!"); } }
я еще не пробовал вставлять базу данных sql
NotPolitcallyCorrect
Какая-нибудь помощь в чем? "Я хочу" - это не описание проблемы.
Member 13058884
извините, что я новичок в codeproject, мне нужно некоторое предложение о том, как реализовать вставку базы данных sql, а также как отправить текст, прочитанный клиентской стороной, на сервер. я мог отправить любой файл по сети, но не мог отправить текст, прочитанный клиентом..
NotPolitcallyCorrect
"предложение о том, как реализовать вставку базы данных sql", вы заходите в свою любимую поисковую систему, набираете "Java sql server connection" и начинаете проводить некоторые исследования.
"я мог бы отправить любой файл по сети, но не мог бы отправить текст, прочитанный клиентом". Отправка текста-это одно и то же, так в чем же разница? Именно тогда вы узнаете, как использовать отладчик, чтобы узнать, что происходит в вашем коде.