「java中tcp编程」tcp java
今天给各位分享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的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-07,除非注明,否则均为
原创文章,转载请注明出处。