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接続サーバ側
TCP/IP接続クライアント
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();
}*/
}
}