网络通信 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();
}
}
}
- Socket网络通信理论基础搜集(TCP/IP协议栈与数据包封装+TCP与UDP的区别)
- boost::asio::ip::tcp实现网络通信的小例子(转载) - fengyc - 博客园
- TCP和UDP通信(C#网络编程) ---- 系列文章
- 网络通信编程笔记(四):TCP通信(C语言)
- 小河学习日记---tcp网络通信接收端
- python网络编程之TCP通信实例和socketserver框架使用例子
- linux TCP网络通信过程
- 网络通信 - TCP
- C#网络编程.2.套接字.TcpListener.TcpClient.服务端客户端通信
- boost::asio::ip::tcp实现网络通信的小例子
- Linux网络编程 - TCP Socket 简单练习:新进程辅助通信
- TCP/IP网络通信 WinSock编程
- C#网络通信:TCP连接
- python网络编程之TCP通信实例和socketserver框架使用例子
- JAVA中UDP通信。 一个程序为服务端,建立UDP服务端套接字。 另外一个程序为客户端,建立UDP客户端套接字。 这两个新程序可以互联,完成一个基于TCP/IP网络的文本聊天程序。
- UNIX环境高级编程学习之第十六章网络IPC:套接字 - 简单TCP Socket 通信
- 基于TCP网络通信的自动升级程序源码分析-客户端接收文件
- [网络编程]——TCP_Socket通信_聊天室_客户端多线程.初步形成
- TCP网络通信
- uc笔记10---网络通信,套接字(Socket),基于 TCP 协议的客户机/服务器模型