Java学习笔记_网络(2)
单向的客户端发送服务器端接收并显示,没有使用多线程
import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.net.*;
import java.awt.event.*; public class ChatClient {
private JTextArea text_area;
private PrintWriter writer;
private Socket s; public static void main(String[] args) {
ChatClient client = new ChatClient();
client.go();
} private void go() {
build_gui();
setup_net();
} private void build_gui() {
JFrame frame = new JFrame("Chat Client");
JPanel panel = new JPanel();
text_area = new JTextArea(1, 20);
panel.add(text_area);
JButton button = new JButton("Send");
button.addActionListener(new SendButtonListener());
panel.add(button);
frame.add(BorderLayout.CENTER, panel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(50, 50, 400, 100);
frame.setVisible(true);
} public class SendButtonListener implements ActionListener {
public void actionPerformed(ActionEvent a) {
String msg = text_area.getText();
System.out.println(msg);
writer.println(msg);
writer.flush(); //如果没有则服务器端收不到消息
}
} private void setup_net() {
try {
s = new Socket("127.0.0.1", 4242);
writer = new PrintWriter(s.getOutputStream());
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
import java.io.*;
import java.net.*; public class ChatServer { public static void main(String[] args) {
ChatServer server = new ChatServer();
server.go();
} private void go() {
setup_net();
} private void setup_net() {
try {
ServerSocket serverSock = new ServerSocket(4242);
while (true) {
Socket s = serverSock.accept();
System.out.println("client connected");
InputStreamReader streamReader = new InputStreamReader( s.getInputStream() );
BufferedReader reader = new BufferedReader( streamReader );
String msg;
try { //如果没有这个try则当客户端关闭后会异常退出
while ( (msg = reader.readLine()) != null ) {
System.out.println(msg);
}
} catch (IOException ex) { System.out.println("client disconnected"); }
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
Java学习笔记_网络(2)的更多相关文章
- Java学习笔记_网络+多线程
支持同时收发的客户端和服务器端 客户端 import javax.swing.*; import java.awt.*; import java.io.*; import java.net.*; im ...
- java学习笔记_网络
客户端 import java.io.*; import java.net.*; public class DailyAdviceClient { public void go() { try { S ...
- 【原】Java学习笔记034 - 网络
package cn.temptation; import java.net.InetAddress; public class Sample01 { public static void main( ...
- 7.4 (java学习笔记)网络编程之TCP
一.TCP 1.1 TCP(Transmission Control Protocol 传输控制协议),是一种面向连接的,安全的传输协议,但效率相比于UDP而言比较低. TCP传输时需要确保先建立连接 ...
- Java精选笔记_网络编程
网络编程 概述 现在的网络编程基本上都是基于请求/响应方式的,也就是一个设备发送请求数据给另外一个,然后接收另一个设备的反馈. 在网络编程中,发起连接程序,也就是发送第一次请求的程序,被称作客户端(C ...
- Java学习笔记_ 数据库隔离级别和事务传播行为
转自: https://blog.csdn.net/qq_38545713/article/details/79779265 一:数据库的事物隔离级别与传播行为总结: 很多人 ...
- Java学习笔记(3)----网络套接字服务器多线程版本
本例给出一个客户端程序和一个服务器程序.客户端向服务器发送数据.服务器接收数据,并用它来生成一个结果,然后将这个结果返回给客户端.客户端在控制台上显示结果.在本例中,客户端发送的数据是圆的半径,服务器 ...
- java学习笔记_序列化
如果父类没有实现Serializable接口,子类实现了Serializable接口,那么子类是可以序列化的. 但是如果想要反序列化,那么就需要父类支持默认构造函数. 因为在反序列化的过程中不会调用子 ...
- java学习笔记_接口
接口:interface(关键字) public interface USB {} 1. 接口中都是抽象方法,方法前面的可见度(public.private)和抽象关键字(abstract)可以不写. ...
随机推荐
- Maven_真的需要吗?
1.真的需要吗? Maven 是干什么用的?这是很多同学在刚开始接触 Maven 时最大的问题.之所以会提出这个问题,是因为即使不使用 Maven 我们仍然可以进行 B/S 结构项目的开发.从表述层. ...
- 【Codeforces 264B】Good Sequences
[链接] 我是链接,点我呀:) [题意] 让你在一个递增数组中选择一个最长子序列使得gcd(a[i],a[i+1])>1 [题解] 设f[i]表示以一个"含有素因子i的数字" ...
- HDU 1274 递归拼接字符串
题目大意: 根据所给的数字,表示其相连的字符的输出个数,或是下一个括号中的所有字符的输出个数 每一个相互对应的 '(' 和 ')' 中的所有字母均作为一组数据处理 在每一次dfs过程中都处理好这样一个 ...
- js 发布订阅模式
//发布订阅模式 class EventEmiter{ constructor(){ //维护一个对象 this._events={ } } on(eventName,callback){ if( t ...
- E - Super Jumping! Jumping! Jumping! DP
Nowadays, a kind of chess game called “Super Jumping! Jumping! Jumping!” is very popular in HDU. May ...
- POJ 2104 K-th Number(区间第k大数)(平方切割,归并树,划分树)
题目链接: http://poj.org/problem? id=2104 解题思路: 由于查询的个数m非常大.朴素的求法无法在规定时间内求解. 因此应该选用合理的方式维护数据来做到高效地查询. 假设 ...
- Oracle基础(四)pl/sql
PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL). PL/SQL是Oracle数据库对SQL语句的扩展.在普通SQL语句的使用上添加了编程语言的特点 ...
- Android天气预报+百度天气接口
首先 在准备编敲代码之前有几点准备工作 1首先须要调节Android的DNS地址. (这个我会在末尾提及) http://www.eoeandroid.com/forum.php? mod=viewt ...
- linux 运行tensorflow文件缺少_bz2问题及解决
今天,终于把如何在linux服务器上运行tensorflow程序的问题解决: 1.首先要在服务器上python下安装tensorflow(要看好是在python2还是python3下安装,还要看好是C ...
- duilib-Ex-Debug
因为一些事件google无法訪问,托管在其上的项目也无法检出也基本无人更新,因此维护了一个版本号,用于排除已有的bug和扩展一些功能.这样能够避免反复造轮子和反复的修车子.欢迎大家一起维护.本人能力和 ...