通过TCP进行客户端与服务器端通信

wyk321456 2014-10-30 11:23:40
为何只能进行单方通信?无法进行双方通信?????求大神解救!!!!!!!!!!

package swing;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.BevelBorder;

public class Test1903 extends JFrame
{
private BufferedReader reader;
private ServerSocket server;
private Socket socket;
private PrintWriter writer;
// Socket socket;
private JTextArea ta=new JTextArea();
private JTextField tb=new JTextField();
Container c;
public Test1903(String title){

super(title);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

c=this.getContentPane();
final JScrollPane scrollpane=new JScrollPane();
scrollpane.setBorder(new BevelBorder(BevelBorder.RAISED));
scrollpane.setBackground(Color.GREEN);
getContentPane().add(scrollpane,BorderLayout.CENTER);
scrollpane.setViewportView(ta);

tb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
writer.println(tb.getText());
ta.append(tb.getText()+'\n');
ta.setSelectionEnd(ta.getText().length());
tb.setText("");
}

});
c.add(tb,"South");



}
public void getserver(){
try
{
server = new ServerSocket(8998);
ta.append("服务器套接字已经创建成功\n");
for (;;)
{
ta.append("等待客户机的连接\n");
this.socket = this.server.accept();
this.reader = new BufferedReader(new InputStreamReader(this.socket
.getInputStream()));
getClientMessage();
}
}
catch (Exception e)
{
e.printStackTrace();
}

}
private void connect(){
ta.append("try connect\n");
try{//Thread.sleep(4000);
socket=new Socket("127.0.0.1",8999);
writer=new PrintWriter(socket.getOutputStream(),true);
ta.append("Succeed in connecting\n");

}catch(Exception e){
e.printStackTrace();
}
}





private void getClientMessage()
{
try
{
for (;;)
{
if (this.reader.ready()) {
ta.append("客户机:" + this.reader.readLine());
}
}
}
catch (Exception e)
{
e.printStackTrace();
try
{
if (this.reader != null) {
this.reader.close();
}
if (this.socket != null) {
this.socket.close();
}
}
catch (IOException e1)
{
e1.printStackTrace();
}
}}


public static void main(String[] args)
{
Test1903 tcp = new Test1903("jahfb");
tcp.setSize(500,500);
tcp.setVisible(true);
tcp.connect();
tcp.getserver();

}
}



package swing;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.BevelBorder;

public class Test190301 extends JFrame
{
private BufferedReader reader;
private ServerSocket server;
private Socket socket1;
private PrintWriter writer;
// Socket socket;
private JTextArea ta=new JTextArea();
private JTextField tb=new JTextField();
Container c;
public Test190301(String title){

super(title);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

c=this.getContentPane();
final JScrollPane scrollpane=new JScrollPane();
scrollpane.setBorder(new BevelBorder(BevelBorder.RAISED));
scrollpane.setBackground(Color.GREEN);
getContentPane().add(scrollpane,BorderLayout.CENTER);
scrollpane.setViewportView(ta);

tb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
writer.println(tb.getText());
ta.append(tb.getText()+'\n');
ta.setSelectionEnd(ta.getText().length());
tb.setText("");
}

});
c.add(tb,"South");



}
public void getserver(){
try
{
server = new ServerSocket(8999);
ta.append("服务器套接字已经创建成功\n");
for (;;)
{
ta.append("等待客户机的连接\n");
this.socket1 = this.server.accept();
this.reader = new BufferedReader(new InputStreamReader(this.socket1
.getInputStream()));
getClientMessage();
}
}
catch (Exception e)
{
e.printStackTrace();
}

}
private void connect(){
ta.append("try connect\n");
try{//Thread.sleep(1000);
socket1=new Socket("127.0.0.1",8998);
writer=new PrintWriter(socket1.getOutputStream(),true);
ta.append("Succeed in connecting\n");

}catch(Exception e){
e.printStackTrace();
}
}





private void getClientMessage()
{
try
{
for (;;)
{
if (this.reader.ready()) {
ta.append("客户机:" + this.reader.readLine());
}
}
}
catch (Exception e)
{
e.printStackTrace();
try
{
if (this.reader != null) {
this.reader.close();
}
if (this.socket1 != null) {
this.socket1.close();
}
}
catch (IOException e1)
{
e1.printStackTrace();
}
}}


public static void main(String[] args)
{
Test190301 tcp = new Test190301("asfaunf");
tcp.setSize(500,500);
tcp.setVisible(true);
tcp.connect();
tcp.getserver();

}
}
...全文
127 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧