继续写java和socket
上回书说道,java中通过socket链接的两台计算机可以通过两端的两个Socket对象来读取和发送来自流的信息所以对于客户端和服务端只需要封装一个相同的收发信息的窗口就好
代码如下
package testpackage; import java.net.Socket;
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.PrintWriter;
import java.net.ServerSocket; public class Server extends Thread{
Socket client=null;
TalkFrame tf=new TalkFrame();
String s;
BufferedReader is =null;//input from client
PrintWriter os=null;
public Server(Socket client){
this.client=client;
tf.setVisible(true);
try {
is = new BufferedReader(new InputStreamReader(client.getInputStream()));
os=new PrintWriter(client.getOutputStream());
} catch (IOException e) {
// TODO Auto-generated catch block }
tf.send.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
String str=tf.talkbox.getText();
s=s+"\nME:"+str;
tf.showbox.setText(s);
os.println(str);
os.flush();
} }); }
public void run() {
String readline;
try {
readline = is.readLine();
while(!readline.equals("bye")) {
s=s+"\nHE:"+readline;
tf.showbox.setText(s);
readline = is.readLine();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }
界面如下:
package testpackage; import java.awt.Dimension;
import java.awt.FlowLayout; import javax.swing.*; public class TalkFrame extends JFrame {
public JPanel mainPanel=new JPanel();
public JTextArea showbox=new JTextArea();
public JPanel bottom=new JPanel();
public JButton send=new JButton("send");
public JTextArea talkbox=new JTextArea();
public TalkFrame() {
this.add(mainPanel);
mainPanel.add(showbox);
showbox.setAutoscrolls(true);
showbox.setPreferredSize(new Dimension(500,500));
showbox.setEditable(false);
mainPanel.add(bottom);
bottom.add(talkbox);
bottom.add(send);
talkbox.setPreferredSize(new Dimension(300,20));
mainPanel.setPreferredSize(new Dimension(500,550));
FlowLayout fl=new FlowLayout();
fl.setAlignment(FlowLayout.LEADING);
fl.setAlignOnBaseline(true);
this.setLayout(fl);
this.pack();
//this.setVisible(true);
}
public static void main(String a[]) {
new TalkFrame().setVisible(true);
}
}
对于接受和链接socket的方法 上篇已经提到过,只要吧两个socket用这个类封装一下就行了:https://www.cnblogs.com/mayeye/p/9571740.html
继续写java和socket的更多相关文章
- 简单通过java的socket&serversocket以及多线程技术实现多客户端的数据的传输,并将数据写入hbase中
业务需求说明,由于公司数据中心处于刚开始部署的阶段,这需要涉及其它部分将数据全部汇总到数据中心,这实现的方式是同上传json文件,通过采用socket&serversocket实现传输. 其中 ...
- Flex通信-与Java实现Socket通信实例
Flex通信-与Java实现Socket通信实例 转自:http://blessht.iteye.com/blog/1136888 博客分类: Flex 环境准备 [服务器端] JDK1.6,“ja ...
- Java使用socket实现两人聊天对话
import java.io.*; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; /* ...
- Java NIO Socket 非阻塞通信
相对于非阻塞通信的复杂性,通常客户端并不需要使用非阻塞通信以提高性能,故这里只有服务端使用非阻塞通信方式实现 客户端: package com.test.client; import java.io. ...
- Java使用Socket传输文件遇到的问题(转)
1.写了一个socket传输文件的程序,发现传输过去文件有问题.找了一下午终于似乎找到了原因,记录下来警示一下: 接受文件的一端,向本地写文件之前使用Thread.sleep(time)休息一下就解决 ...
- Java使用Socket传输文件遇到的问题
1.写了一个socket传输文件的程序,发现传输过去文件有问题.找了一下午终于似乎找到了原因,记录下来警示一下: 接受文件的一端,向本地写文件之前使用Thread.sleep(time)休息一下就解决 ...
- java的socket通信
本文讲解如何用java实现网络通信,是一个非常简单的例子,我比较喜欢能够立马看到结果,所以先上代码再讲解具体细节. 服务端: import java.io.BufferedReader; import ...
- Java多线程 Socket使用
点我跳过黑哥的卑鄙广告行为,进入正文. Java多线程系列更新中~ 正式篇: Java多线程(一) 什么是线程 Java多线程(二)关于多线程的CPU密集型和IO密集型这件事 Java多线程(三)如何 ...
- java.net.Socket/java.net.ServerSocket-TCP Socket编程
TCP 的 Java 支持 协议相当于相互通信的程序间达成的一种约定,它规定了分组报文的结构.交换方式.包含的意义以及怎样对报文所包含的信息进行解析,TCP/IP 协议族有 IP 协议.TCP 协议和 ...
随机推荐
- 使用Python统计函数绘制简单图形matplotlib
1.bar() -- 绘制柱状图 plt.bar(x,y,align="center",color="b",tick_label=["a", ...
- Python——字符串、文件操作,英文词频统计预处理
一.字符串操作: 解析身份证号:生日.性别.出生地等. 凯撒密码编码与解码 网址观察与批量生成 2.凯撒密码编码与解码 凯撒加密法的替换方法是通过排列明文和密文字母表,密文字母表示通过将明文字母表向左 ...
- Java虚拟机学习-Java内存区域(一)
Java虚拟机内存划分为以下几个区域: 1.方法区:方法区是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息.常量.静态变量.即时编译器编译后的代码等数据.虽然Java虚拟机规范把方法区描述为 ...
- 初读"Thinking in Java"读书笔记之第八章 --- 多态
再论向上转型 在某些方法中,仅接收基类作为参数,而不是特殊的导出类,会使得程序更容易扩展. 转机 方法调用绑定 前期绑定(编译期绑定):在编译期将一个方法调用和方法主体关联起来. 后期绑定(动态绑定或 ...
- CC2640蓝牙芯片开发备记
server ,characteristic UUID ,handle sever ,一个工程里可以有多个服务,按键服务,心率计服务,马达服务. characteristic , 一个服务可以有多个的 ...
- java中外部类和内部类的访问控制符区别
外部类只有两种访问控制符,即public和default(包访问控制级别).原因:外部类的上一级程序单元是包,所以它只有两种作用域:同一个包内和任何位置,这样只需要用public和default即可, ...
- Delphi Redis Client
https://github.com/danieleteti/delphiredisclient
- list映射
例 1 List 解析介绍 >>> li = [1, 9, 8, 4] >>> [elem*2 for elem in li] [2, 18, 16, 8] > ...
- 周强、张季跃,马凯军《面向对象与程序设计Java》第十四周学习总结
实验十四 Swing图形界面组件 实验时间 20178-11-29 理论部分:不使用布局管理器 有时候可能不想使用任何布局管理器,而只 是想把组件放在一个固定的位置上.下面是将一 个组件定位到某个绝 ...
- Python_文件处理
1.Python 文件处理 打开文件---->读取内容---->获得内容 读取文件方式: r 只读文件 w 只写模式 a 追加模式 r+b 读写模式 w+b 写读模式 a+b ...