Posted on 2008-08-04 21:36
夢與橋 閱讀(348)
評論(0) 編輯 收藏 所屬分類:
java基礎
1、InetAddress類
InetAddress類沒有提供構造函數,只可以調用一些靜態方法來生成。
2、使用URL方式進行網絡連接:
import java.io.*;
import java.net.*;
public class Test
{
public static void main(String args[])
{
try
{
URL url=new URL("http://www.baidu.com");
BufferedReader br=new BufferedReader(
new InputStreamReader(url.openStream()));
String str;
while((str=br.readLine())!=null)
{
System.out.println(str);
}
br.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
3、基于TCP的socke編程:
圖解:

code:
服務器端:
import java.io.*;
import java.net.*;
public class xServer
{
public static final int PORT=4500;
public static void main(String args[])throws IOException
{
ServerSocket s=new ServerSocket(PORT);
System.out.println("Begin:"+s);
try
{
Socket socket=s.accept();
try
{
System.out.println("Connection accepted:"+socket);
BufferedReader in=new BufferedReader(
new InputStreamReader(socket.getInputStream()));
PrintWriter out=new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())),true);
while(true)
{
String st=in.readLine();
if(st.equals("END"))break;
System.out.println("Recived:"+st);
out.println("OK:");
}
}
finally
{
System.out.println("closing...");
socket.close();
}
}
finally
{
s.close();
}
}
}
客戶端:
import java.io.*;
import java.net.*;
public class xClient
{
public static void main(String[] args)throws IOException
{
InetAddress addr=InetAddress.getByName("localhost");
System.out.println("addr="+addr);
Socket socket =new Socket(addr,xServer.PORT);
try
{
System.out.println("socket="+socket);
BufferedReader in=new BufferedReader(
new InputStreamReader(socket.getInputStream()));
PrintWriter out=new PrintWriter(new BufferedWriter(
new OutputStreamWriter(socket.getOutputStream())),true);
for(int i=0;i<5;i++)
{
out.println(i+"Hello!");
String st=in.readLine();
System.out.println(">>"+st);
}
out.println("END");
}
finally
{
System.out.println("closing...");
socket.close();
}
}
}
4、基于UDP的Socket編程:
服務器端:
import java.io.*;
import java.lang.*;
import java.net.*;
public class UDPServerDemo
{
private DatagramSocket skServer;
private DatagramPacket dpServer;
private byte rb[];
private String strReceived;
public UDPServerDemo()
{
Init();
}
public void Init()
{
try
{
skServer=new DatagramSocket(10005);
System.out.println("服務器已啟動并已處于監聽狀態!");
rb=new byte[1024];
dpServer=new DatagramPacket(rb,rb.length);
strReceived="";
int i=0;
while(i==0)
{
//System.out.println("i="+i);
skServer.receive(dpServer);
i=dpServer.getLength();
if(i>0)
{
strReceived=new String(rb,0,dpServer.getLength());
System.out.println("[from Client]"+strReceived);i=0;
}
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void main(String args[])
{
new UDPServerDemo();
}
}
客戶端;
import java.io.*;
import java.lang.*;
import java.net.*;
public class UDPClientDemo
{
private DatagramSocket dsClient;
private DatagramPacket dpClient;
private byte sb[];
private String strSend;
public UDPClientDemo()
{
Init();
}
public void Init()
{
try
{
dsClient=new DatagramSocket(10002);
sb=new byte[1024];
strSend="使用UDP方式發送的數據";
sb=strSend.getBytes();
dpClient=new DatagramPacket(sb,sb.length,InetAddress.getByName("localhost"),10005);
System.out.println("開始發送數據...");
dsClient.send(dpClient);
System.out.println("數據發送完畢!");
}
catch (SocketException se)
{
se.printStackTrace();
}
catch (IOException ie)
{
ie.printStackTrace();
}
}
public static void main(String args[])
{
new UDPClientDemo();
}
}