继续写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 协议和 ...
随机推荐
- js 回调
function getTittleLableData(callback) { $.ajax({ type : 'POST', url : ctx + '/feeInf/getDataValue', ...
- java中的异常处理问题。
异常处理--基本概念 当出现程序无法控制的外部环境问题(用户提供的文件不存在,文件内容损坏,网络不可用...)时,JAVA就会用异常对象来描述. java中用2种方法处理异常: 1.在发生异常的地方直 ...
- 第十二周翻译-《Pro SQL Server Internals, 2nd edition》
<Pro SQL Server Internals, 2nd edition> 作者:Dmitri Korotkevitch 翻译:赖慧芳 译文: 专业SQL服务器内部 了解在引擎盖下发生 ...
- webpack-dev-server报错
运行npm run dev报错,---- webpack-dev-server --inline --progress --config build/webpack.dev.conf.js npm E ...
- TP5框架 nginx服务器 配置域名 隐藏index.php
server { listen ; #server_name localhost; server_name hhy.com;/**这里写自己的域名*/ #charset koi8-r; #access ...
- 利用js 生成不同li标签的点击事件
<ul> <li>click me</li> <li>你好啊2</li> <li>你好啊3</li> <li& ...
- Vue2.x路由的步骤
创建路由步骤: 1.引入vue-router库,可用最新版https://unpkg.com/vue-router 2.创建所需要的组件 3.创建router实例对象 4.在根实例中注册一下 => ...
- HTTP Status 500 - Error instantiating servlet class cn.it.bd.S011
HTTP Status 500 - Error instantiating servlet class cn.it.bd.S011 出现此报错的很大可能是因为 <servlet-class> ...
- 【Python】关于decode和encode
#-*-coding:utf-8 import sys ''' *首先要搞清楚,字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码, 即先将 ...
- Notepad++的实用技巧
一. 安装notepad + + notepad++的下载.安装非常easy.下一步下一步,所有选项都默认就可以安装好.但有几点需要注意. 截止到写这篇博文,notepad++的最新版本为7.5 ...