继续写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 协议和 ...
随机推荐
- input输入框失去焦点,软键盘关闭后,滚动的页面无法恢复到原来位置
H5微信页面开发,软键盘弹起后,若原输入框被遮挡,页面整体将会上移,然而当输入框失焦,软键盘收起后,页面未恢复,导致弹框里的按钮响应区域错位. 解决方案:给输入框(或select选择框)添加失去焦点的 ...
- hive常用操作
相关显示参数设置 显示参数设置 set hive.cli.print.header=true; // 打印列名 set hive.cli.print.row.to.vertical=true; // ...
- Android四大组件之Service --- 如何启动和停止Service?
启动和停止方法主要是通过Intent来实现 以上一篇中的ServiceTest项目为例来启动和停止MyService这个服务 首先修改activity_main.xml中的代码,如下所示:<Li ...
- 集合练习 练习:每一个学生Student都有一个对应的归属地定义为String类型。学生属性:姓名,年龄 注意:姓名和年龄相同的视为同一个学生。保证学生的唯一性。 1、描述学生。 2、定义Map容器,将学生作为键,地址作为值存入集合中。 3、获取Map中的元素并进行排序。
package com.rf.xs.map; public class Student implements Comparable<Student> { private String na ...
- url参数解析 and 日期格式化
~function (pro) { //url解析 function queryURLParameter() { var reg = /([^?&=#]+)=([^?&=#]+)/g, ...
- ResNet网络再剖析
随着2018年秋季的到来,提前批和内推大军已经开始了,自己也成功得当了几次炮灰,不过在总结的过程中,越是了解到自己的不足,还是需要加油. 最近重新复习了resnet网络,又能发现一些新的理念,感觉很f ...
- 踩坑学习python自动化测试第一天!
这只是一个标题, # 迭代器与生成器# 迭代器有两个基本的方法:iter() 和 next(). # 字符串,列表或元组对象都可用于创建迭代器:"""list1 = [1 ...
- 说一下syslog日志吧~~~
# -*- coding:utf-8 -*-from logging.handlers import *import loggingimport logging.handlers class MySo ...
- cafee编译错误几个总结
1.CXX/LD -o .build_release/examples/siamese/convert_mnist_siamese_data.bin .build_release/lib/libcaf ...
- echarts设置option中的数据对象优化
if(tab.name == 'first'){ myChart.setOption({ legend: { selected:{ [this.playNumber]:true, [this.cove ...