「java中tcp编程」tcp java

博主:adminadmin 2022-12-07 12:39:05 70

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

本文目录一览:

java写tcp客户端测试类该怎么写

1.TCP服务端的程序编写

package test;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.ServerSocket;

import java.net.Socket;

public class MyTcp{

private BufferedReader reader;

private ServerSocket serverSocket;

private Socket socket;

/**

* 创建服务端的程序,读取客户端传来的数据

*/

void getserver(){

try {

serverSocket = new ServerSocket(8998); //实例化服务端socket

System.out.println("服务器套接字已经创建成功");

while (true) {

System.out.println("等待客户机的连接:");

socket = serverSocket.accept(); //实例化socket对象

reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); //实例化BufferReader对象

getClientMessage();

}

} catch (Exception e) {

e.printStackTrace();

}

}

private void getClientMessage() {

try {

while (true) {

System.out.println("客户机传来的信息是:"+reader.readLine());

}

} catch (Exception e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

MyTcp myTcp = new MyTcp(); //创建本类对象

myTcp.getserver();

}

}

2.TCP客户端程序编写

package test;

import java.awt.BorderLayout;

import java.awt.Container;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.PrintWriter;

import java.net.Socket;

import java.nio.channels.WritableByteChannel;

import javax.swing.JFrame;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.JTextField;

import javax.swing.border.BevelBorder;

public class MyTcpClient extends JFrame{

private PrintWriter printWriter;

Socket socket;

private JTextField jTextField = new JTextField();

private JTextArea jTextArea = new JTextArea();

Container container;

/**

* 创建的Tcp客户端程序

*/

public MyTcpClient (String title) {

super(title);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

container = this.getContentPane();

final JScrollPane jScrollPane = new JScrollPane();

jScrollPane.setBorder(new BevelBorder(BevelBorder.RAISED)); //显示边框

getContentPane().add(jScrollPane,BorderLayout.CENTER);

jScrollPane.setViewportView(jTextArea);

container.add(jTextField,"South"); //将文本框放在窗体下面

jTextField.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

printWriter.println(jTextField.getText()); //将文本框的信息写入流(为下面的输出流写入信息做准备)

jTextArea.append(jTextField.getText() + "\n");

jTextArea.setSelectionEnd(jTextArea.getText().length());

jTextField.setText(null);

}

});

}

private void connect() {

jTextArea.append("尝试连接中...\n");

try {

socket = new Socket("127.0.0.1",8998);

printWriter = new PrintWriter(socket.getOutputStream(),true); //将printwriter中的信息流写入到套接字的输出流传送给服务端

jTextArea.setText("已完成连接\n\n");

} catch (Exception e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

MyTcpClient myTcpClient = new MyTcpClient("向服务器发送数据");

myTcpClient.setSize(500,200);

myTcpClient.setVisible(true);

myTcpClient.connect();

}

}

3.效果展示

1先将服务端的程序跑起来

2再将客户端的程序跑起来

3.客户端和服务端进行交互

java的TCP编程,改错

/*客户端*/

import java.net.*;

import java.io.*;

import java.lang.String;

public class SocketManage extends Thread

{

private InputStream is;

private OutputStream os;

private DataInputStream dis;

private DataOutputStream dos;

private ServerManage serverManage;

private String IP;

public SocketManage(ServerManage serverManage, Socket s)

{

this.serverManage = serverManage;

//初始化流 用于输入输出

try

{

IP = InetAddress.getLocalHost().getHostAddress();

is = s.getInputStream();

os = s.getOutputStream();

dis = new DataInputStream(is);

dos = new DataOutputStream(os);

}

catch (Exception e) { }

this.start();

}

public void run()

{

while (true)

{

try

{

//将当前用户的信息 发送给所有的在线用户(包括了自己)

serverManage.printAllUserMsg(this, dis.readUTF());

}

catch (Exception e) { }

}

}

public String getIP() { return IP; }

public void printMsg(String msgdate)

{

try

{

dos.writeUTF(IP + " :\n"+msgdate);

}

catch (Exception e) { }

}

}

/*服务器*/

import java.net.*;

import java.io.*;

import java.util.*;

import java.lang.String;

public class ServerManage extends Thread

{

//private HashtableInteger, SocketManage connList;

private VectorSocketManage connectList;

private Socket ssocket;

private String IP;

public ServerManage()

{

connectList = new VectorSocketManage();

this.start();

}

public void run()

{

try

{

ServerSocket ss = new ServerSocket(9999);

System.out.println("服务器开始运行!");

String ip = InetAddress.getLocalHost().getHostAddress();

System.out.println("服务器IP:" + ip);

while (true)

{

ssocket = ss.accept();

IP = ssocket.getInetAddress().getHostAddress();

System.out.println(IP + " 进入服务器!");

connectList.addElement(new SocketManage(this, ssocket));

}

}

catch (Exception e)

{

System.out.println("服务器被玩坏了!!");

System.exit(1);

}

}

//消息发送到所有用户

public void printAllUserMsg(SocketManage ss,String msgdate)

{

for (int i = 0; i connectList.size(); i++)

{

ss = connectList.elementAt(i);

ss.printMsg(msgdate);

System.out.println("消息成功发送给 "+ss.getIP() + "\n");

}

}

public String getIP() { return IP; }

}

我只会这样玩 看到你用println 感觉很高端

JAVA TCP Socket编程 计算题

服务器端CalculateServer.java:

package serverModule;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintStream;

import java.net.ServerSocket;

import java.net.Socket;

public class CalculateServer {

    public static void main(String [] args){

        CalculateServer calculateServer=new CalculateServer();

        try {

            calculateServer.startServer();

        } catch (Exception e) {

            e.printStackTrace();

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

        }

    }

    //把输入的字符串转换成float数组

    public float [] convertToArray(String inputString){

        String numberString=inputString.substring(inputString.indexOf('[')+1,inputString.indexOf(']'));

        String [] stringArray=numberString.split(",");

        float [] numberArray=new float[2];

        for(int i=0;i2;i++){

            try {

                numberArray[i]=Float.parseFloat(stringArray[i]);

            }catch (NumberFormatException e){

                System.out.println("数字错误!");

                return null;

            }

        }

        return  numberArray;

    }

    //计算数组结果

    public String getResultString(float [] numberArray){

        float[] result=new float[4];

        result[0]=numberArray[0]+numberArray[1];

        result[1]=numberArray[0]=numberArray[1];

        result[2]=numberArray[0]*numberArray[1];

        result[3]=numberArray[0]/numberArray[1];

        String resultString=String.format("[%1$s,%2$s,%3$s,%4$s]",result[0],result[1],result[2],result[3]);

        return  resultString;

    }

    //socketServer

    public void startServer() throws Exception{

        ServerSocket serverSocket= null;

        PrintStream out=null;

        BufferedReader in=null;

        Socket socketObj=null;

        try {

            serverSocket = new ServerSocket(1888);

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

            socketObj=serverSocket.accept();

            out=new PrintStream(socketObj.getOutputStream());

            in=new BufferedReader(new InputStreamReader(socketObj.getInputStream()));

        } catch (IOException e) {

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

        }

        boolean flag=true;

        CalculateServer cs=new CalculateServer();

        try {

            while (flag){

                String inputString=in.readLine();

                System.out.println("接收到数据:"+inputString);

                if(inputString.equals("bye")){

                    flag=false;

                    continue;

                }

                if(inputString==null||inputString.length()5) {

                    out.println("你的输入有误 !");

                }else {

                    out.println(cs.getResultString(cs.convertToArray(inputString)));

                }

            }

        }catch (Exception e){

            out.println("数据输入有误!");

        }finally {

            out.close();

            in.close();

            socketObj.close();

            serverSocket.close();

        }

    }

}

客户端CalculateClient.java

package clientModule;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.PrintStream;

import java.net.Socket;

public class CalculateClient {

    public static void main(String [] args){

        CalculateClient calculateClient=new CalculateClient();

        try {

            calculateClient.startClient();

        } catch (Exception e) {

            System.out.println("启动失败!");

        }

    }

    public void startClient () throws Exception{

        Socket socketObj=new Socket("localhost",1888);

        PrintStream out=null;

        BufferedReader in=null;

        out=new PrintStream(socketObj.getOutputStream());

        in=new BufferedReader(new InputStreamReader(socketObj.getInputStream()));

        BufferedReader localInput=null;

        localInput=new BufferedReader(new InputStreamReader(System.in));

        boolean flag=true;

        while (flag) {

            System.out.println("请输入两个数字,格式为[number1,number2],输入bye则退出:");

            String inputString = localInput.readLine();

            out.println(inputString);

            if(inputString.equals("bye")){

                flag=false;

            }else{

                String input=in.readLine();

                System.out.println("服务器返回结果为:");

                System.out.println(input);

            }

        }

        out.close();

        in.close();

        localInput.close();

        socketObj.close();

    }

}

关于java中tcp编程和tcp java的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

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