Socket通信客户端设计(Java)
public class Client extends JFrame implements Runnable{
private JPanel jPanel= new JPanel();
private JLabel jLabel1=new JLabel("姓名: ");
private JLabel jLabel2=new JLabel("端口: ");
private JTextField jTextField1=new JTextField();
private JTextField jTextField2=new JTextField();
private JTextArea jTextArea=new JTextArea();
private JTextField jTextField3=new JTextField();
private JButton jButton=new JButton("发送(S)");
private JScrollPane jScrollPane=new JScrollPane();
private BufferedReader bufferedReader;
private PrintWriter printWriter;
private Socket socket;
private static String title="劲爆聊天室";
public Client(String port,String name){
super(title+":"+name);
this.setSize(377,387);
this.add(jPanel);
jPanel.setLayout(null);
jTextArea.setEditable(false);
//
jPanel.add(jLabel1);
jLabel1.setBounds(10, 10, 60, 20);
jTextField1.setText(name);
jTextField1.setEditable(false);
jPanel.add(jTextField1);
jTextField1.setBounds(60, 10, 60, 21);
jPanel.add(jLabel2);
jLabel2.setBounds(125, 10, 60, 20);
jTextField2.setText(port);
jTextField2.setEditable(false);
jPanel.add(jTextField2);
jTextField2.setBounds(190, 10, 60, 21);;
jPanel.add(jTextField3);
jTextField3.setBounds(10, 270, 320, 21);
jTextArea.setColumns(20);
jTextArea.setRows(5);
jTextArea.setEditable(false);
jScrollPane.setViewportView(jTextArea);
jPanel.add(jScrollPane);
jScrollPane.setBounds(10, 42, 320, 220);
jPanel.add(jButton);
jButton.setBounds(250, 300, 80, 22);
jButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getSource()==jButton){
printWriter.println(jTextField1.getText()+": "+jTextField3.getText());
jTextField3.setText("");
}
}
});
//Jtextfield不好控制啊。。。。
/* jTextField3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
printWriter.println(jTextField1.getText()+":"+jTextField3.getText());
jTextField3.setText("");
}
});*/
getSocket();
}
@Override
public void run(){
while(true)
{
try {
jTextArea.append(bufferedReader.readLine()+"\n");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
public void getSocket(){
jTextArea.append("正在与劲爆聊天室进行连接..."+"\n");
try {
socket=new Socket("127.0.0.1",PortNumber.PORT.getNumber());
jTextArea.append("劲爆聊天开始..."+"\n");
bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
printWriter=new PrintWriter(socket.getOutputStream(),true);
new Thread(this).start();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
考虑到多客户端,此处用到了多线程。Socket确实有意思....
非常感叹T公司如果把一个IM软件,做到亿级用户量,如何解决并发,如何解决Server的及时回应,如何完成数据存储...
想不出来了...
Socket通信客户端设计(Java)的更多相关文章
- 基于Tcp协议的简单Socket通信实例(JAVA)
好久没写博客了,前段时间忙于做项目,耽误了些时间,今天开始继续写起~ 今天来讲下关于Socket通信的简单应用,关于什么是Socket以及一些网络编程的基础,这里就不提了,只记录最简单易懂实用的东西. ...
- c++ 网络编程(一)TCP/UDP windows/linux 下入门级socket通信 客户端与服务端交互代码
原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/9601511.html c++ 网络编程(一)TCP/UDP 入门级客户端与服务端交互代码 网 ...
- Socket通信客户端和服务端代码
这两天研究了下Socket通信,简单实现的客户端和服务端代码 先上winfrom图片,客户端和服务端一样 服务端代码: using System; using System.Collections.G ...
- C#应用视频教程1.2 Socket通信客户端实现
接下来我们尝试实现最简单的Socket客户端,为了确保只可能你的代码有问题,服务器要先用别人成熟的代码测试(这也是编程的一个技巧,先不要用自己写的客户端测试自己写的服务器,这样出了问题你也不知道谁有问 ...
- C#应用视频教程1.3 Socket通信客户端完善
我们先把前面的代码封装成一个完整的类,因为跟网络相关的方法并不一定是建立socket的服务器和客户端,所以还是应该把两个分开,比如获取本机IP,修改本机IP,PING远程主机这些事情应该放在一个单独的 ...
- Socket通信-客户端
WSADATA wsd; SOCKET sHost; SOCKADDR_IN servAddr; if (WSAStartup(MAKEWORD(2, 2), &wsd) != 0) retu ...
- Java Socket 通信实例 - 转载
基于Tcp协议的简单Socket通信实例(JAVA) 好久没写博客了,前段时间忙于做项目,耽误了些时间,今天开始继续写起~ 今天来讲下关于Socket通信的简单应用,关于什么是Socket以及一些 ...
- php的socket通信
socket通常叫做'套接字',用于描述IP地址和端口,是一个通信链的句柄.应用程序通过套接字向网络发出请求或者应答忘了请求.socket既不是程序,也不是协议,其只是操作系统提供的通信层的一组抽象A ...
- JAVA基础知识之网络编程——-TCP/IP协议,socket通信,服务器客户端通信demo
OSI模型分层 OSI模型是指国际标准化组织(ISO)提出的开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它将网络分为七 ...
随机推荐
- Spring Boot+AngularJS中因为跨域导致Session丢失
http://blog.csdn.net/dalangzhonghangxing/article/details/52446821 如果还在为跨域问题烦恼,请查看博主的 解决angular+sprin ...
- ubuntu下查找某个文件的路径
参考:ubuntu下如何查找某个文件的路径 http://blog.csdn.net/lieyanhaipo/article/details/17055667 在Ubuntu有时候会遇到记得 ...
- QQ登录类
2015-3-31 22:02:09 (同一套代码, pc端不能登录, 但是, 手机和平板都可以正常登录.....) 1. 首先是库文件, 登录->授权->token->openid ...
- 13. javacript高级程序设计-事件
1. 事件 1.1 事件流 事件流描述的是从页面中接受事件的顺序,IE的事件是冒泡流,而Netscape Communicator的事件流是事件捕捉流. 1.1.1 事件冒泡 <!DOCTYPE ...
- web.config中配置页面出错后跳转指定错误页面
每当用户访问错误页面时,会出现不友好的404错误,所以为了防止这种不友好,我们在web.config中的<system.web>节点下配置 <customErrors>,在出现 ...
- 检索COM 类工厂中 CLSID 为 {} 的组件时失败
- 使用WKWebView替换UIWebView
开发App的过程中,常常会遇到在App内部加载网页,通常用UIWebView加载.这个自iOS2开始使用的网页加载器一直是开发的心病:加载速度慢,占用内存多,优化困难.如果加载网页多,还可能因为过量占 ...
- IOS - socket 编程初体验
#import "ViewController.h" @interface ViewController () <NSStreamDelegate, UITextFieldD ...
- DX使用texconv工具批处理dds格式图片
texconv D:\png\*.* -o E:\dds -m 5 -f dxt3 -ft dds 上述命令的意思是把D:\png目录下的全部文件(当然可以指定特定格式例如*.png)转换成dds格式 ...
- ios waxpatch lua语法
Wax Lua 使用方法 说一下 Wax 的特点,它支持你在脚本里使用任何 OC 的类,同样也支持你创建一个类. 使用一个类时你会这样使用: 1 2 NSString -- Returns the N ...