1. 什么是Client/Sever模式
这是一种软件交互的模式:至少需要一个接收服务的服务端和使用指定的客户端和他进行通信(例如,智能手机安装的新浪微博应用就是客户端,它可以和微博的服务器进行通信);相对的有Browser/Server模式:用户不需要安装额外的客户端,仅仅使用浏览器就可以和服务器通信(例如使用浏览器访问门户网站)。
2. 用java 写出一个Server 和Client 能实现Client发送的消息显示在服务端上,Server发送的信息显示在客户端上
你好!
我写的很简单,你可以在此基础上完善,好了,废话不多说,直入正题。
首先,建立一个项目名为TestChat,然后建两个包,分别为server和client。
server包下建立一个类为Server,一个类为ServerListen。
client包建立一个类Client,一个类为ClentListen。
由于我时间仓促,你自行参考哈。
***********************************************************************
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* Server.java
*
* Created on 2011-5-8, 16:37:13
*/
package server;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author Study
*/
public class Server extends javax.swing.JFrame {
/** Creates new form Server */
public Server() {
initComponents();
try {
ss = new ServerSocket(8888);
s = ss.accept();
in = new ObjectInputStream(getS().getInputStream());
out = new ObjectOutputStream(getS().getOutputStream());
this.startListen();
} catch (IOException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
//
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
messageShow = new javax.swing.JTextArea();
messageInput = new javax.swing.JTextField();
sendBtn = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("服务器");
messageShow.setColumns(20);
messageShow.setEditable(false);
messageShow.setRows(5);
jScrollPane1.setViewportView(messageShow);
sendBtn.setText("发送");
sendBtn.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
sendBtnMousePressed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
.addComponent(messageInput, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap(333, Short.MAX_VALUE)
.addComponent(sendBtn)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 201, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(messageInput, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(sendBtn)
.addContainerGap(19, Short.MAX_VALUE))
);
pack();
}//
private void sendBtnMousePressed(java.awt.event.MouseEvent evt) {
this.sendMessage();
this.messageInput.setText("");
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Server().setVisible(true);
}
});
}
// Variables declaration - do not modify
protected javax.swing.JScrollPane jScrollPane1;
protected javax.swing.JTextField messageInput;
protected javax.swing.JTextArea messageShow;
protected javax.swing.JButton sendBtn;
// End of variables declaration
private ServerSocket ss;
private Socket s;
private ObjectOutputStream out;
private ObjectInputStream in;
private void startListen() {
ServerListen listen = new ServerListen(this);
Thread t = new Thread(listen);
t.start();
}
/**
* @return the s
*/
public Socket getS() {
return s;
}
/**
* @return the out
*/
public ObjectOutputStream getOut() {
return out;
}
/**
* @return the in
*/
public ObjectInputStream getIn() {
return in;
}
/**
* @return the messageShow
*/
public javax.swing.JTextArea getMessageShow() {
return messageShow;
}
private void sendMessage() {
try {
out.writeObject("服务器说");
out.flush();
out.writeObject(this.messageInput.getText().trim());
out.flush();
} catch (IOException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
3. 有JAVA的手机就能做股票上网交易吗?
是的,有JAVA功能的手机就可以安装各种软件,包括手机股票软件。
步步高i系列的手机定位于“娱乐”、“游戏”手机,一般都内置有JAVA功能,可以安装手机股票软件。
目前的手机炒股软件种类有多种,有像同花顺、大智慧、移动、联通等开发的手机证券,一般收费20-30元/月(开发这种软件的目的就是赚钱),另外一种是像“金太阳”手机证券之类,带有一定公益性质,不完全以盈利为目的,免费开放行情和资讯系统的软件。有各种手机的专版,可以直接从手机WAP网站下载到手机,无需从电脑导入,很方便。
其他软件不一定好用,楼主不妨试试由国信证券研发的“金太阳”手机证券,他是完全免费的,除了移动(联通)收取的手机上网费用外(一般5元/月足够),没有其他任何费用,可以没有限制在手机上的观看到实时股票(包括港股)行情,以及最新的国信经济研究所资讯。国信证券的客户还可以在该软件上进行方便的交易,“金太阳”的银证转帐功能更是独一无二的!
下图是步步高i188手机下载好金太阳后的示意图:
下载的方法(三步)很容易大家自己操作,都在我们的博客里面,有问题欢迎用各种途径咨询:http://blog.sina.com.cn/zfhello
希望对楼主和其他有需要的朋友有帮助。
4. 用java做一个股票软件。
可以把股价数值和坐标轴都先乘上100。因为股价变动最小0.01,所以扩大100倍后所有股价就都是整数了。如果需要显示数字,可以在设定显示值是实际坐标值的1%。
5. 如何用java实现用股票名称查询实时股票信息
1、首先如果用中文名称查询可能出现中文乱码的错误,虽然能够解决,但是步骤上比较麻烦
2、如果你想实现,可以设置超链接也就是
实现一下
比如:中国人寿
可能在格式上也就是+后面的东西是写在引号内还是引号外,我有点记不起来了
不过这个好解决,你可以尝试一下
6. linux 建立sever和client程序 基于socket通信
哥们,这么穷啊,一分不给啊。。o(︶︿︶)o ,不过我给你代码吧
这是client
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define PORT 3490
#define MAXDATASIZE 100
int main(int argc,char *argv[])
{
int sockfd,numbytes;
char buf[MAXDATASIZE];
struct hostent *he;
struct sockaddr_in their_addr;
if(argc!=2){
fprintf(stderr,"usage:client hostname\n");
exit(1);}
if((he=gethostbyname(argv[1]))==NULL){
herror("gethostbyname");
exit(1);}
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){
perror("socket");
exit(1);}
their_addr.sin_family=AF_INET;
their_addr.sin_port=htons(PORT);
their_addr.sin_addr=*((struct in_addr*)he->h_addr);
bzero(&(their_addr.sin_zero),8);
if(connect(sockfd,(struct sockaddr*)&their_addr,sizeof(struct sockaddr))==-1){
perror("connect");
exit(1);}
if((numbytes=recv(sockfd,buf,MAXDATASIZE,0))==-1){
perror("recv");
exit(1);}
buf[numbytes]='\0';
printf("Received:%s",buf);
close(sockfd);
return 0;
}
这是server
#include
#include
#include
#include
#include
#include
#include
#include
#define MYPORT 3490
#define BACKLOG 10
main()
{
int sockfd,new_fd;
struct sockaddr_in my_addr;
struct sockaddr_in their_addr;
int sin_size;
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
{
perror("socket");
exit(1);
}
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(MYPORT);
my_addr.sin_addr.s_addr=INADDR_ANY;
bzero(&(my_addr.sin_zero),8);
if(bind(sockfd,(struct sockaddr*)&my_addr,sizeof(struct sockaddr))==-1)
{
perror("bind");
exit(1);
}
if(listen(sockfd,BACKLOG)==-1){
perror("listen");
exit(1);
}
while(1){
sin_size=sizeof(struct sockaddr_in);
if((new_fd=accept(sockfd,(struct sockaddr*)&their_addr,&sin_size))==-1)
{
perror("accept");
continue;
}
printf("server:got connection from %s\n",inet_ntoa(their_addr.sin_addr));
if(!fork()){
if(send(new_fd,"Hello,world!\n",14,0)==-1)
perror("send");
sleep(30);
close(new_fd);
exit(0);
}
close(new_fd);
while(waitpid(-1,NULL,WNOHANG)>0);
}
}
7. java ssk框架下如何应用socket把消息从一个Client传到另一个Client
消息socket只能在客户端与服务器之间进行传递。两个客户端没有关联的情况下又怎么发送接收消息呢。
8. 请推荐有蓝牙、炒股、JAVA的便宜手机?
联想(Lenovo)P612 GSM手机(醇棕色)精钢奢华机身 一机双卡 内置QQ大智慧炒股 2.4屏幕
这款手机很漂亮,外观收有点像诺基亚的N79,内置了QQ和大智慧炒股软件,很实用,京东商城报价为549,可以压倒所有山寨机。
联想还有很多差不多的,你可以自己去京东商城网上去看下