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),它将网络分为七 ...
随机推荐
- css常用效果总结
1.给input的placeholder设置颜色 .phColor::-webkit-input-placeholder { /* WebKit, Blink, Edge */ color:maroo ...
- kendoUI grid 过滤时出错:TypeError toLowerCase is not a function
错误原因:类型不一致. 有些过滤类型为字符串,有些为整型时.
- windows编程注意点(持续更新)
1.windows编程中,所有的操作都放到窗口过程中进行,main函数只用于描述窗口基本信息. 2.用于获取设备环境句柄时,用BeginPaint/EndPaint,消耗cpu小,但占内存大;用Get ...
- 【HOG】
http://blog.csdn.net/masibuaa/article/details/12917961 把这份资料大概看完了 大概了解Hog了
- LeetCode 263 Ugly Number
Problem: Write a program to check whether a given number is an ugly number. Ugly numbers are positiv ...
- IOS - 键盘处理
iOS 发布了很多关于屏幕上键盘的通知.下面列出了这些通知的简要解释: UIKeyboardWillShowNotification 当键盘即将要显示的时候将会发出这个通知.这个通知包含了用户信息库, ...
- [Android Pro] InputStream.skip方法的思考
参考 : http://blog.csdn.net/gsyzhu/article/details/8102286 在java.io.InputStream类中定义了skip这个方法.在API中的描述如 ...
- git安装--linux下的安装
一般linux自带git版本很旧,会有一定问题,可以先卸载系统自带git: yum remove git下载及安装git: wget https://github.com/git/git/archiv ...
- jvm分析
是什么 jps 查看所有的jvm进程,包括进程ID,进程启动的路径等等. jstack 观察jvm中当前所有线程的运行情况和线程当前状态. 系统崩溃了?如果java程序崩溃生成core文件,j ...
- A Horrible Poem(bzoj 2795)
Description 给出一个由小写英文字母组成的字符串S,再给出q个询问,要求回答S某个子串的最短循环节.如果字符串B是字符串A的循环节,那么A可以由B重复若干次得到. Input 第一行一个正整 ...