您的位置:首页 > 理论基础 > 计算机网络

JAVA之TCP网络程序

2016-07-27 12:14 465 查看
单方向的TCP通信



server端

import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Calendar;
import java.util.Date;
import java.text.SimpleDateFormat;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import javax.xml.crypto.Data;

public class sSocket {
private ServerSocket server;
private Socket socket;
private BufferedReader reader;
private JTextArea jt = new JTextArea(15,20);
private JTextField jf = new JTextField();

public sSocket(){
JFrame frame = new JFrame();
JScrollPane js = new JScrollPane(jt);
Container con = frame.getContentPane();
frame.setLocationRelativeTo(null);
con.add(js,"North");
con.add(jf,"South");

frame.setSize(200,400);
frame.setVisible(true);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

getSever();
}

public void getSever(){
try {
server = new ServerSocket(8848);
jt.append("服务器套接字创建成功...\n");
while(true){
jt.append("wait for client connect...\n");
socket = server.accept();
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
jt.append("connect client success...\n");
getClientMsg();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void getClientMsg(){
SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
try {
while(true){
String ss = reader.readLine();
if(!ss.equals("")){
Calendar c = Calendar.getInstance();
jt.append("client " + df.format(c.getTime()) + "\n");
jt.append(ss + "\n");
jt.setCaretPosition(jt.getText().length());
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

try {
if(reader != null)
reader.close();
if(socket != null)
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public static void main(String[] args){
new sSocket();
}
}

客户端

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.Writer;
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.URL;
import java.net.URLConnection;
import java.net.UnknownHostException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Iterator;
import java.util.Random;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
import javax.swing.table.DefaultTableModel;

public class test extends JFrame{
private JTextArea jt = new JTextArea(15,20);
private JTextField jf = new JTextField();
private PrintWriter writer;
private ServerSocket server;
private Socket socket;

public test(){
init();
connect();

jf.addActionListener(new ActionListener() {
SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
String s = jf.getText();
writer.println(s + "\n");
Calendar c = Calendar.getInstance();
jt.append("Me " + df.format(c.getTime()) + "\n");
jt.append(s + "\n");
jt.setCaretPosition(jt.getText().length());
jf.setText("");
}
});
}

public void connect(){
jt.append("try to connect...\n");
try {
socket = new Socket(InetAddress.getLocalHost(), 8848);
writer = new PrintWriter(socket.getOutputStream(),true);
jt.append("connet success...\n");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void init(){
setLocationRelativeTo(null);
Container con = getContentPane();
JScrollPane js = new JScrollPane(jt);

con.add(js,"North");
con.add(jf,"South");
setVisible(true);
setSize(200,400);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

}

public static void main(String[] agrs){
new test();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: