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)可以不写. ...
随机推荐
- vue.js组件之间通讯的数据双向绑定----父亲把数据传递给儿子,儿子更改数据后,重新发送给父亲,父亲数据更改后,属性会重新发送个儿子,儿子刷新新数据
vue组件是相互独立的,如果要交互通讯,这时候,就需要组件之间数据互通了 往常我们讲的都是数据传递,子传父,父传子,都没有说子和父,父与子之间的数据互通 父亲传递给儿子数据,儿子触发一个父亲方法,将最 ...
- poj——1006 生理周期
生理周期 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 138291 Accepted: 44300 Descripti ...
- 洛谷 P1991 无线通讯网
P1991 无线通讯网 题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫 ...
- Java虚拟机深入JVM内核—原理、诊断与优化视频教程
http://www.eimhe.com/forum.php?mod=viewthread&tid=142832&highlight=%C4%DA%BA%CB
- C#: 旋转图片到正确位置
当从iPhone等手机上传图片到服务器后,通常需要进行旋转处理,否则在进行图片压缩.缩放处理后会丢失正确的位置信息,导致显示的图片不处于正确的位置上. 处理的做法就是读取照片的Exif信息,并旋转到正 ...
- 好纠结啊,JEECG 商业版本号和开源版本号有什么差别呢?
好纠结啊.JEECG 商业版本号和开源版本号有什么差别呢? 2014-12-18 jeecg JEECG tp=webp" style="width: 698px;" a ...
- es6 Object.assign ECMAScript 6 笔记(六) ECMAScript 6 笔记(一) react入门——慕课网笔记 jquery中动态新增的元素节点无法触发事件解决办法 响应式图像 弹窗细节 微信浏览器——返回操作 Float 的那些事 Flex布局 HTML5 data-* 自定义属性 参数传递的四种形式
es6 Object.assign 目录 一.基本用法 二.用途 1. 为对象添加属性 2. 为对象添加方法 3. 克隆对象 4. 合并多个对象 5. 为属性指定默认值 三.浏览器支持 ES6 O ...
- HDUPhysical Examination(贪心)
HDUPhysical Examination(贪心) 题目链接 题目大意:给N个队列,每一个队列在0时刻体检的时候完毕时间是ai.假设超过t(s),那么就是ai + t∗bi.问如何组合才干用最短的 ...
- jquery动态创建form表单
function exportExcel() { var merchantName = $('#merchantName').val(); var merchantNo = $('#merchantN ...
- IPV6相关RFC文档
1. 通用 IPv6的通用RFC和Internet草案 RFC# 类 标题 1752 标准记录 对IP下一代协议的建议 1924 资料 IPv6地址的压缩表示法 2851 标准记录 Internet网 ...