「java点对点」点对点利用

博主:adminadmin 2022-12-01 01:34:06 77

今天给各位分享java点对点的知识,其中也会对点对点利用进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

JAVA点对点聊天代码

给你一个做得很垃圾的Scoket的聊天的!

import java.io.InputStream;

import java.io.DataInputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.DataOutputStream;

import java.io.BufferedReader;

import java.net.ServerSocket;

import java.net.Socket;

import java.io.IOException;

import java.util.Date;

class Server

{

public Server()

{

try

{

ServerSocket s=new ServerSocket(8888);

Socket ss=s.accept();

OutputStream out=ss.getOutputStream();

DataOutputStream dout=new DataOutputStream(out);

InputStream in=ss.getInputStream();

DataInputStream din=new DataInputStream(in);

System.out.print(din.readUTF()+"!");

dout.writeUTF("你已经连接到服务器"+"\t"+"你的地址:"+ss.getInetAddress()+"\t"

+"你的链接端口:"+ss.getLocalPort()+"\n");

new ReadMessage(din).start();

new SendMessage(dout).start();

}

catch (IOException e)

{

e.printStackTrace();

}

}

public static void main(String[] args)

{

new Server();

}

}

//接受客户端信息

class ReadMessage extends Thread

{

private DataInputStream din;

public ReadMessage(DataInputStream din)

{

this.din=din;

}

public void run()

{

String str;

try

{

while (true)

{

str=din.readUTF();

System.out.println(new Date().toLocaleString()+"客户端说:"+str);

if (str.equals("bye"))

{

System.out.println("客户端下线!");

break;

}

}

}

catch (IOException e)

{

e.printStackTrace();

}

}

}

// 发出服务器信息

class SendMessage extends Thread

{

private DataOutputStream dout;

public SendMessage(DataOutputStream dout)

{

this.dout=dout;

}

public void run()

{

InputStreamReader inr=new InputStreamReader(System.in);

BufferedReader buf=new BufferedReader(inr);

String str;

try

{

while(true)

{

str=buf.readLine();

dout.writeUTF(str);

if (str.equals("bye"))

{

System.out.println("服务器退出!");

System.exit(1);

}

}

}

catch (IOException e)

{

e.printStackTrace();

}

}

}

import java.io.InputStream;

import java.io.DataInputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.DataOutputStream;

import java.io.BufferedReader;

import java.net.Socket;

import java.io.IOException;

import java.util.Date;

class Client

{

public Client()

{

try

{

Socket s=new Socket("192.168.1.2",8888);

InputStream in=s.getInputStream();

DataInputStream din=new DataInputStream(in);

OutputStream out=s.getOutputStream();

DataOutputStream dout=new DataOutputStream(out);

dout.writeUTF("服务器你好!我是客户端");

System.out.println(din.readUTF());

new Thread(new SenderMessage(dout)).start();

new Thread(new ReaderMessage(din)).start();

}

catch (IOException e)

{

e.printStackTrace();

}

}

public static void main(String[] args)

{

new Client();

}

}

class ReaderMessage implements Runnable

{

private DataInputStream din;

public ReaderMessage(DataInputStream din)

{

this.din=din;

}

public void run()

{

String str;

try

{

while(true)

{

str=din.readUTF();

System.out.println(new Date().toLocaleString()+"服务器说:"+str);

if (str.equals("bye"))

{

System.out.println("服务器已经关闭,此程序自动退出!");

break;

}

}

}

catch (IOException e)

{

e.printStackTrace();

}

}

}

class SenderMessage implements Runnable

{

private DataOutputStream dout;

public SenderMessage(DataOutputStream dout)

{

this.dout=dout;

}

public void run()

{

String str;

InputStreamReader inf=new InputStreamReader(System.in);

BufferedReader buf=new BufferedReader(inf);

try

{

while (true)

{

str=buf.readLine();

dout.writeUTF(str);

if (str.equals("bye"))

{

System.out.println("客户端自己退出!");

System.exit(1);

}

}

}

catch (IOException e)

{

e.printStackTrace();

}

}

}

远程运行测试通过!

JAVA点对点对话,跟我说找不到符号,高手求解,谢谢!

第一个:

BufferedReader is =new(此处加new) BufferedReader(new InputStreamReader(socket.getInputStream()));

第二个:PrintWriter os = new PrintWriter(socket.getOutputstream());

改为socket.getOutputStream();//Stream的S要大写

求教 如何用java实现点对点的视屏通话

(1)服务器首先启动监听程序,对指定的端口进行监听,等待接收客户端的连接请求。 (2)客户端程序启动,请求连接服务器的指定端口。 (3)服务器收到客户端的连接请求后与客户端建立套接字连接。

Java点对点 打洞通信原理

网络任何位置放一个SQL Server,客户端去连接SQL Server,做数据操作共享,这样算是一个B/S或者说一个C/S通信。服务器就是SQL Server,但这个不是点对点,叫分布式

传输命令用Socket类,他的作用是传送字节形式,分为UDP/TCP通信方式,这类方法实际上比JDBC还要耗费资源

java点对点传输文件代码

//在我电脑运行没问题,把E:/EKI.txt传送到D:/EKI.txt你可以换成其它文件

//先运行Server,然后client,共三个class有问题QQ23400262

package ch.socket.file;

import java.io.*;

import java.net.ServerSocket;

import java.net.Socket;

public class Server extends Thread {

public static int port = 6789;

public static String host = "127.0.0.1";

private static ServerSocket server = null;

public void run() {

if (server == null) {

try {

// 1、新建ServerSocket实例

server = new ServerSocket(port);

} catch (IOException e) {

e.printStackTrace();

}

}

System.out.println("服务器启动...");

while (true) {

try {

// 2、访问ServerSocket实例的accept方法取得一个客户端Socket对象

Socket client = server.accept();

if (client == null)

continue;

new SocketConnection(client, "D:\\").start();

} catch (IOException ex) {

ex.printStackTrace();

}

}

}

public static void main(String[] args) {

new Server().start();

}

}

package ch.socket.file;

import java.io.*;

import java.io.IOException;

import java.net.Socket;

import java.net.UnknownHostException;

public class Client {

private Socket client;

private boolean connected;

public boolean isConnected() {

return connected;

}

public void setConnected(boolean connected) {

this.connected = connected;

}

public Client(String host, int port) {

try {

// 1、新建Socket对象

client = new Socket(host, port);

System.out.println("服务器连接成功!");

this.connected = true;

} catch (UnknownHostException e) {

this.connected = false;

close();

} catch (IOException e) {

System.out.println("服务器连接失败!");

this.connected = false;

close();

}

}

/**

* 将文件内容发送出去

*

* @param filepath

* 文件的全路径名

*/

public void sendFile(String filepath) {

DataOutputStream out = null;

DataInputStream reader = null;

try {

if (client == null)

return;

File file = new File(filepath);

reader = new DataInputStream(new BufferedInputStream(

new FileInputStream(file)));

// 2、将文件内容写到Socket的输出流中

out = new DataOutputStream(client.getOutputStream());

out.writeUTF(file.getName()); // 附带文件名

int bufferSize = 2048; // 2K

byte[] buf = new byte[bufferSize];

int read = 0;

while ((read = reader.read(buf)) != -1) {

out.write(buf, 0, read);

}

out.flush();

} catch (IOException ex) {

ex.printStackTrace();

close();

} finally {

try {

reader.close();

out.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

/**

* 关闭Socket

*/

public void close() {

if (client != null) {

try {

client.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

public static void main(String[] args) {

Client client = new Client(Server.host, Server.port);

if (client.isConnected()) {

client.sendFile("E:\\EKI.txt");

client.close();

}

}

}

package ch.socket.file;

import java.net.Socket;

import java.io.*;

public class SocketConnection extends Thread{

private Socket client;

private String filepath;

public SocketConnection(Socket client, String filepath){

this.client = client;

this.filepath = filepath;

}

public void run(){

if(client == null) return;

DataInputStream in = null;

DataOutputStream writer = null;

try{

//3、访问Socket对象的getInputStream方法取得客户端发送过来的数据流

in = new DataInputStream(new BufferedInputStream(client.getInputStream()));

String fileName = in.readUTF(); //取得附带的文件名

if(filepath.endsWith("/") == false filepath.endsWith("\\") == false){

filepath += "\\";

}

filepath += fileName;

//4、将数据流写到文件中

writer = new DataOutputStream(new BufferedOutputStream(new BufferedOutputStream(new FileOutputStream(new File(filepath)))));

int bufferSize = 2048;

byte[] buf = new byte[bufferSize];

int read = 0;

while((read=in.read(buf)) != -1){

writer.write(buf, 0, read);

}

writer.flush();

System.out.println("数据接收完毕");

}catch(IOException ex){

ex.printStackTrace();

}finally{

try{

in.close();

writer.close();

client.close();

}catch(IOException e){

e.printStackTrace();

}

}

}

}

java点对点的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于点对点利用、java点对点的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-01,除非注明,否则均为首码项目网原创文章,转载请注明出处。