什么是Client/Sever模式

2024-05-10 19:24

1. 什么是Client/Sever模式

这是一种软件交互的模式:至少需要一个接收服务的服务端和使用指定的客户端和他进行通信(例如,智能手机安装的新浪微博应用就是客户端,它可以和微博的服务器进行通信);相对的有Browser/Server模式:用户不需要安装额外的客户端,仅仅使用浏览器就可以和服务器通信(例如使用浏览器访问门户网站)。

什么是Client/Sever模式

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 
希望对楼主和其他有需要的朋友有帮助。

有JAVA的手机就能做股票上网交易吗?

4. 用java做一个股票软件。

可以把股价数值和坐标轴都先乘上100。因为股价变动最小0.01,所以扩大100倍后所有股价就都是整数了。如果需要显示数字,可以在设定显示值是实际坐标值的1%。

5. 如何用java实现用股票名称查询实时股票信息

1、首先如果用中文名称查询可能出现中文乱码的错误,虽然能够解决,但是步骤上比较麻烦
2、如果你想实现,可以设置超链接也就是
实现一下
比如:中国人寿
可能在格式上也就是+后面的东西是写在引号内还是引号外,我有点记不起来了
不过这个好解决,你可以尝试一下

如何用java实现用股票名称查询实时股票信息

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只能在客户端与服务器之间进行传递。两个客户端没有关联的情况下又怎么发送接收消息呢。

java ssk框架下如何应用socket把消息从一个Client传到另一个Client

8. 请推荐有蓝牙、炒股、JAVA的便宜手机?

联想(Lenovo)P612 GSM手机(醇棕色)精钢奢华机身 一机双卡 内置QQ大智慧炒股 2.4屏幕
这款手机很漂亮,外观收有点像诺基亚的N79,内置了QQ和大智慧炒股软件,很实用,京东商城报价为549,可以压倒所有山寨机。
联想还有很多差不多的,你可以自己去京东商城网上去看下