【IT面试题——语言基础类】Java(三)
(2012-06-23 16:48:22)
标签:
it |
分类: 技术类原创 |
22.Java
socket编程实例。
分别以UDP和TCP进行示例。
UDP示例
———————————UDP
发送端 —————————————
package socket;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
class UdpSend {
public static void main(String[] args) throws IOException{
DatagramSocket ds = new DatagramSocket();
String stringToSend = "test
message!";
DatagramPacket packet = new DatagramPacket(stringToSend.getBytes(),stringToSend.length(),InetAddress.getByName("219.245.79.179"),5000);
ds.send(packet);
ds.close();
}
}
import
import
import
import
class
}
—————————— UDP 接收端 —————————————
package socket;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UdpRcv {
public static void main(String[] s) throws IOException{
DatagramSocket ds = new DatagramSocket(5000);
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf,buf.length);
ds.receive(packet);
String str = new String(packet.getData(),0,packet.getLength());
System.out.println(str);
ds.close();
}
}
import
import
import
public
}
总结:
UDP发送:
1.建立发送UDP套接字
DatagramSocket ds = new DatagramSocket();
2.创建UDP数据包(包含了目的地址信息)
DatagramPacket packet =
new
3.利用UDP套接字发送
UDP接收:
1.建立接收UDP套接字
DatagramSocket ds = new DatagramSocket(5000);
2.创建接收数据用的UDP数据包对象
stringToSend.getBytes().length
TCP示例
—————————— TCP 服务器端 —————————————
package socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpServer {
public static void main(String[] s) throws IOException{
ServerSocket server = new ServerSocket(5001);
Socket client = server.accept();
InputStreamReader inStreamReader = new InputStreamReader(client.getInputStream());
BufferedReader in = new BufferedReader(inStreamReader);
PrintWriter out = new PrintWriter(client.getOutputStream(),true);
while(true){
String str = in.readLine();
if(str.equalsIgnoreCase("end")){
break;
}
out.println("keep
on talking - -
...");
}
client.close();
server.close();
}
}
import
import
import
import
import
import
public
}
—————————— TCP 客户端 —————————————
package socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class TcpClient {
public static void main(String[] s) throws UnknownHostException, IOException{
Socket client = new Socket(InetAddress.getLocalHost(),5001);
InputStreamReader isStreamReader = new InputStreamReader(client.getInputStream());
BufferedReader in = new BufferedReader(isStreamReader);
PrintWriter out = new PrintWriter(client.getOutputStream());
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
while(true){
String str = input.readLine();
out.println(str);
out.flush();
if (str.equalsIgnoreCase("end")) {
break;
}
System.out.println(in.readLine());
}
client.close();
}
}
import
import
import
import
import
import
import
public
}
总结:
TCP发送
1.建立TCP Socket对象
Socket client = new Socket(InetAddress.getLocalHost(),5001);
2.从对象获得输入输出流
client.getOutputStream();
client.getInputStream();
3.利用输入数出流进行通信
InputStream -> InputStreamReader ->
BufferedReader
OutputStream -> PrintWriter
TCP接收
1.建立TCP
socket服务端对象
ServerSocket server = new ServerSocket(5001);
2.阻塞等待,获得套接字
Socket client = server.accept();
3.从套接字获得输入输出流
client.getOutputStream();
client.getInputStream();
4.利用输入输出流进行操作(同上)
实际应用中socket服务器端应该用多线程实现,每接收一个socket就启动一个线程进行处理即可。
23.Java
NIO ,AIO是什么?
前一篇:30分钟让你成为一个更好的程序员
后一篇:Hadoop简介

加载中…