JAvaネットワークプログラミングのTCP/IP-SocketServerとSocket

6448 ワード

JAvaネットワークプログラミングは主に4つの部分を含む:(タイムアウト時間の設定に注意)
1.URL接続:クラスURLは、インターネットの「リソース」へのポインタである統合リソースロケータを表します.リソースは、単純なファイルまたはディレクトリであってもよいし、データベースや検索エンジンのクエリーなど、より複雑なオブジェクトへの参照であってもよい.
2.HttpURLConnection接続:servletに相当し、postまたはget方式で単一のリクエストを送信し、
3.TCP/IP接続信頼性伝送サーバSocketクラス
4.UDP接続DatagramSocketクラス.これは、データパケットを送信および受信するためのソケットを表す.
TCP/IP接続サーバ側

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;


/**
 *@ClassName:Server
 *@author: chenyoulong  
 *@date :2012-7-30   10:35:09
 *@Description:TODO 
 */
public class SendServer {

	/**
	 * @throws IOException  
	 * @Title: main 
	 * @Description: TODO 
	 * @param @param args   
	 * @return void   
	 * @throws 
	 */
	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
       ServerSocket server=new ServerSocket(8888);
       System.out.println("server start");
       Socket sock=server.accept();
       sock.setSoTimeout(6000);   //            ,       (read)    。

       //  
       //           
       //      ,  : byte[]       ,  :     (\r)    (
) InputStream input=sock.getInputStream(); byte[] buf =new byte[1024]; System.out.println("InputStream==="+input); if(input!=null){ int len=input.read(buf); ToolKit.writeLog(SendServer.class.getName(), " :
"+new String(buf, 0, len)); } /* // //( , ) BufferedReader read=new BufferedReader(new InputStreamReader(sock.getInputStream())); String readStr=null; if((readStr=read.readLine())!=null){ ToolKit.writeLog(Server.class.getName(), " :
"+readStr); } if(read!=null) read.close(); */ /*// String outStr=" server "; BufferedWriter write=new BufferedWriter(new OutputStreamWriter(sock.getOutputStream())); if(outStr!=null){ write.write(outStr); } if(write!=null) write.close();*/ // if(sock!=null) sock.close(); if(server!=null) server.close(); }

TCP/IP接続クライアント

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import org.apache.log4j.Logger;


/**
 *@ClassName:ReceiveClient
 *@author: chenyoulong  
 *@date :2012-8-3   2:17:26
 *@Description:TODO 
 */
public class ReceiveClient {
	private final String IP=Setting.RECEIVE_IP;
	private final int PORT=Setting.RECEIVE_PORT;
	private  Logger log = Logger.getLogger(Sender.class.getName());
	//  
	/**
	 * @throws Exception 
	 *     
	 * @Title: send 
	 * @Description: TODO 
	 * @param @param reqMessage   
	 * @return void   
	 * @throws
	 */
   public void send(String reqMessage) throws Exception{
	   Socket sock=null;
	   BufferedOutputStream out=null;
	   try {
		sock=new Socket();

                  SocketAddress sockAdd=new InetSocketAddress(IP, PORT);
	         sock.connect(sockAdd, 2000); //             

	         out=new BufferedOutputStream(sock.getOutputStream());
		out.write(reqMessage.getBytes());
		out.flush();
		
	} catch (UnknownHostException e) {
		// TODO Auto-generated catch block
		log.error("      "+Strings.getStackTrace(e));
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		log.error("      
"+Strings.getStackTrace(e)); e.printStackTrace(); }finally{ if(out!=null){ try { out.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(sock!=null){ try { sock.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } // public String reiceve() throws Exception{ Socket sock=null; BufferedInputStream in=null; try { sock=new Socket(IP,PORT); in = new BufferedInputStream(sock.getInputStream()); if ((sock == null) || (in == null)) { throw new Exception(" , "); } } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } byte[] bts = new byte[10000]; int totalLen = 0, len = 0; while ((len = in.read(bts, totalLen, 1000)) != -1) { totalLen += len; } String result = new String(bts); // return result.trim(); } //main public static void main(String[] args){ // // String str=" !" try { new ReceiveClient().send(str); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } // /*try { String recStr=new Receiver().reiceve(); System.out.println(" =="+recStr); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }*/ } }