首页 > 代码库 > java网络编程之TCP实例
java网络编程之TCP实例
Dgram类
package Socket;import java.net.DatagramPacket;import java.net.InetAddress;public class Dgram { public static DatagramPacket toDatagram(String s, InetAddress destIA, int destPort) { byte[] buf = new byte[s.length() + 1]; s.getBytes(0, s.length(), buf, 0); return new DatagramPacket(buf, buf.length, destIA, destPort); } public static String toString(DatagramPacket p) { return new String(p.getData(), 0, p.getLength()); }}
MultiJabberServer
package Socket;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;class ServeOneJabber extends Thread { private Socket socket; private BufferedReader in; private PrintWriter out; public ServeOneJabber(Socket s) throws IOException { socket = s; in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out = new PrintWriter(new BufferedWriter(new OutputStreamWriter( socket.getOutputStream())), true); start(); } public void run() { try { while (true) { String str = in.readLine(); if (str.equals("END")) break; System.out.println("Echoing:" + str); out.println("From Server:"+str); } System.out.println("closing..."); } catch (IOException e) { } finally { try { socket.close(); } catch (Exception e2) { } } }}public class MultiJabberServer { static final int PORT = 8080; public static void main(String[] args) throws IOException { ServerSocket s = new ServerSocket(PORT); System.out.println("Server Started"); try { while (true) { Socket socket = s.accept(); try { new ServeOneJabber(socket); } catch (IOException e) { socket.close(); } } } finally { s.close(); } }}
MultiJabberClient
package Socket;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.InetAddress;import java.net.Socket;class JabberClientThread extends Thread { private Socket socket; private BufferedReader in; private PrintWriter out; private static int counter = 0; private int id = counter++; private static int threadcount = 0; public static int threadCount() { return threadcount; } public JabberClientThread(InetAddress addr) { System.out.println("Making client " + id); threadcount++; try { socket = new Socket(addr, MultiJabberServer.PORT); } catch (IOException e) { } try { in = new BufferedReader(new InputStreamReader( socket.getInputStream())); out = new PrintWriter(new BufferedWriter(new OutputStreamWriter( socket.getOutputStream())), true); start(); } catch (IOException e) { try { socket.close(); } catch (IOException e2) { } } } public void run() { try { for (int i = 0; i < 25; i++) { out.println("Client " + id + ":" + i); String str = in.readLine(); System.out.println(str); } out.println("END"); } catch (IOException e) { } finally { try { socket.close(); } catch (IOException e2) { threadcount--; } } }}public class MultiJabberClient { static final int MAX_THREADS = 40; public static void main(String[] args) throws IOException, InterruptedException { InetAddress addr = InetAddress.getByName(null); while (true) { if (JabberClientThread.threadCount() < MAX_THREADS) new JabberClientThread(addr); Thread.currentThread().sleep(100); } }}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。