关闭

Java网络编程之TCP

标签: Java网络编程javaTCP网络编程socket
155人阅读 评论(0) 收藏 举报
分类:

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);
        }
    }
}



          有什么问题可以给我留言。

          我的微博http://weibo.com/laokuzai  安卓派,关注android最新资讯

          微信:zhuj8989,加微信畅聊android技术


1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

java-TCP客户端和服务端初始

想着之后一定会用到eclipse和数据库的连接,这客服端和服务端是必学的,如今最近也才开始慢慢学,跟着视频学习。 import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import ...
  • zy_dream
  • zy_dream
  • 2016-04-13 23:21
  • 1509

Java中通过TCP协议发送和接收数据-Socket编程

TCP TCP协议是面向连接、保证高可靠性(数据无丢失、数据无失序、数据无错误、数据无重复到达)传输层协议。 TCP通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。 Socket     Socket可以说是一种针对网...
  • kris234seth
  • kris234seth
  • 2016-02-18 15:14
  • 11730

Java TCP/IP字节流在本地进行数据传输测试

早上搞了一个字符流的,结果速度太慢,又搞了一个字节流的,这个速度比较快,3G的文件用了4分钟 由于只是简单的演示,只为了显示传输的方法,细节没有太多考虑 /** Server代码 */ import java.io.*; import java.net.*; public class UpLo...
  • ylqhust
  • ylqhust
  • 2014-12-06 13:15
  • 1305

使用java实现Server和Client(TCP)

Server.java import java.io.*; import java.net.*; public class Server { public static final int PORT=8888; public void Server() throws...
  • svitter
  • svitter
  • 2014-09-11 16:52
  • 6259

Java Socket 通过TCP交互 实例

Java Socket 编程,分为Socket 和ServerSocket两个类,其中Client 通过构造Socket 实例,向Server 端的ServerSocket发起请求。 ServerSocket 在接受到来自Client 的请求后,构建一个Socket,并将响应内容通过这个Socket...
  • hintcnuie
  • hintcnuie
  • 2013-09-04 22:56
  • 16470

使用Java建立TCP连接并发送数据

TCP协议:传输控制协议  ,应用于运输层 客户端代码--发送请求: import java.io.IOException; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHost...
  • u012867040
  • u012867040
  • 2017-04-25 19:34
  • 2303

java IM基础(一):建立tcp连接

首先,通过Socket建立tcp连接:Socket socket = new Socket("127.0.0.1",1114); 调用socket对象的getOutputStream获取连接的输入输出流: Socket socket = new Socket("12...
  • m18362894610
  • m18362894610
  • 2016-04-21 21:40
  • 761

Java网络编程之(一): TCP的简单连接

Java网络编程之(一): TCP的简单连接 这是一组非常基本的连接, 局域网中电脑A用作服务端,IP为192.168,31.168 电脑B用作客户端,IP为192.168.31.132 一. 服务端TcpServer_1.java import java.net.*; i...
  • colwer
  • colwer
  • 2016-07-12 15:21
  • 657

Java 基于TCP/IP 实现简单的 socket 通信

Java 基于TCP/IP 实现简单的 socket 通信,运行时,仍然需要先来运行服务端,然后再运行客户端即可
  • w_yunlong
  • w_yunlong
  • 2016-01-31 14:59
  • 5043

Java中UDP、TCP及HTTP通信

刚学。原理不写在这里了。 首先,在Java.net包中有表示互联网协议地址(IP)的类InetAddress,此类没有构造函数,其对应实例可由其静态方法getByAddress(byte[] addr);getByName(String host);getLocalHost()&...
  • wangdy0707
  • wangdy0707
  • 2017-05-03 09:02
  • 642
    个人资料
    • 访问:5353次
    • 积分:171
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类