网络通信 Tcp

Class  ServerSocket 服务器套接字 功能 等待来自网上的“请求"。

 Method accept    等待客户机的链接,若链接 创建并返回一个套接字 socket;

reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));

// BufferedReader 缓冲数据流  ; InputStreamReader 转换数据流 例:

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

本实例是一个Tcp服务器端程序

package item;


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;


public class MyTcp {
private BufferedReader reader ;
private ServerSocket server;
private Socket socket;


public static void main(String[] args) {
MyTcp tcp = new MyTcp();
tcp.getserver();


}


void getserver() {
try{
server = new ServerSocket(8998);
System.out.println("服务器套结字已经创建成功");
socket = server.accept();
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
getClientMessage();
} catch (Exception e){
e.printStackTrace();
}

}


private void getClientMessage() {
try{
while(true) {
System.out.println("客户机" + reader.readLine());

}
} catch (Exception e){
e.printStackTrace();
}
try{
if (reader != null){
reader.close();   //关闭流
}
if (socket != null){
socket.close();  //关闭套接字
}
}catch (Exception e){
e.printStackTrace();
}
}


}


********************

客户端实现代码

package item;


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 javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.BevelBorder;


public class MyClien extends JFrame{
Container cc;
private JTextArea ta =  new JTextArea();
private JTextField tf = new JTextField();
Socket socket;
private PrintWriter writer;


public MyClien(String title) {
super(title);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
cc = this.getContentPane();
final JScrollPane  scrollPane = new JScrollPane();
scrollPane.setBorder(new BevelBorder(BevelBorder.RAISED));
// setBorder(border) 设置边框  border 为接口类型, BevelBorder为实现border 接口的子类
cc.add(scrollPane, BorderLayout.CENTER);
//BorderLayout 布局管理 继承Object
scrollPane.setViewportView(ta);
//JScrollPane 没有添加子控件的add 方法,添加子控件可以有 new JScrollPane("子控件");和 他的setViewportView 方法;
cc.add(tf,"South");
tf.addActionListener(new ActionListener(){


@Override
public void actionPerformed(ActionEvent e) {
writer.println(tf.getText());
ta.append(tf.getText() + '\n');
//ta.setSelectionStart(ta.getText().length() - 3);
//ta.setSelectionEnd(ta.getText().length());
tf.setText("");

}

}
);
}


public static void main(String[] args) {
MyClien clien = new MyClien("向服务器发送数据");
clien.setSize(200,200);
clien.setVisible(true);
clien.connect();


}


private void connect() {
ta.append("尝试链接");
try{
socket = new Socket("127.0.1", 8998);
writer = new PrintWriter(socket.getOutputStream(), true);
ta.append("完成链接\n");
}catch (Exception e){
e.printStackTrace();
}

}


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值