基于TCP的Socket编程,我想在客户端通过键盘输入一个用户名,然后把这个值发送到服务器,并在服务器端输出,然后服务器发送一句欢迎信息到客户端,并在客户端显示出来!我写的这个编译也能通过,可是执行的时候在客户端一输入一个值,然后就没有反应了,没有实现设想的功能,请问这个是怎么回事!!
服务器:
import java.io.*;
import java.net.*;
class server
{
public static void main(String[] args)
{
try
{
ServerSocket server=new ServerSocket(9999);
Socket s=server.accept();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream()));
String name=in.readLine();
System.out.println(name);
bw.write("欢迎光临"+name+"JAVA世界");
bw.close();
s.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
客户端:
import java.io.*;
import java.net.*;class client
{
public static void main(String[] args)
{
try
{
Socket c=new Socket(InetAddress.getLocalHost(),9999);
BufferedReader in=new BufferedReader(new InputStreamReader(c.getInputStream()));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(c.getOutputStream()));
System.out.println("请输入用户名:");
BufferedReader here=new BufferedReader(new InputStreamReader(System.in));
String name=here.readLine();
out.write(name);
String fromserver=in.readLine();
System.out.println(fromserver);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
服务器:
import java.io.*;
import java.net.*;
class server
{
public static void main(String[] args)
{
try
{
ServerSocket server=new ServerSocket(9999);
Socket s=server.accept();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream()));
String name=in.readLine();
System.out.println(name);
bw.write("欢迎光临"+name+"JAVA世界");
bw.close();
s.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
客户端:
import java.io.*;
import java.net.*;class client
{
public static void main(String[] args)
{
try
{
Socket c=new Socket(InetAddress.getLocalHost(),9999);
BufferedReader in=new BufferedReader(new InputStreamReader(c.getInputStream()));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(c.getOutputStream()));
System.out.println("请输入用户名:");
BufferedReader here=new BufferedReader(new InputStreamReader(System.in));
String name=here.readLine();
out.write(name);
String fromserver=in.readLine();
System.out.println(fromserver);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
解决方案 »
- JAVA IO 流的一个小问题,各位大大帮我看看
- == 和 equals 的区别
- 急!急!急! 小弟遇见一个难题。请高手帮忙。是把数字换文字输入
- IBM的一道面试题,有兴趣的来作作看
- J2EE 1.3及J2EE1.4所应对应的js2dk的版本应是什么?
- B/S问题(COM+组件问题)
- j2se,oracle9i数据库驱动程序在linux上的配置问题
- 请问scjp的考试大纲是不是有变动啊?
- 在oracle裡怎麼樣取得數據庫裡的每一個表名?
- 请问:java调用oracel问题
- 请问jdbc for mysql驱动是不是mysql-connector-java-3.1.13-bin.jar这一个文件就可以了
- 求TextMining的下载!!!!!!!!!顶者有分!!!!!!!!
while(true){
你想做的事情。
}
import java.net.*;
import java.util.*;
import java.io.*;public class Server
{
public static final int DEFAULT_PORT = 9999;
private ServerSocket myServerSocket;
private Bank bank;
private Hashtable myCustomerDatabase;
public Server()
{
bank = new Bank ("Bank of Monash");
myCustomerDatabase = new Hashtable();
for (int i=0; i < bank.getCustomers().size(); i++)
myCustomerDatabase.put(Integer.toString(i), bank.getCustomers().get(i));
startServer();
}
private void startServer()
{ myServerSocket = null;
try {
myServerSocket = new ServerSocket(DEFAULT_PORT);
} catch (IOException e) {
System.err.println("Could not listen on port: "+DEFAULT_PORT);
System.exit(1);
} Socket clientSocket = null;
try {
clientSocket = myServerSocket.accept();
} catch (IOException e) {
System.err.println("Accept failed.");
System.exit(1);
}try{ PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(
new InputStreamReader(
clientSocket.getInputStream()));
String inputLine, outputLine;
outputLine =null;
out.println(outputLine);
System.out.println("**** Listening for socket");
while (true) {
if((inputLine = in.readLine()) == null)
continue;
else{outputLine = retrieveDatabase(inputLine);
out.println(outputLine);
if(!outputLine.equalsIgnoreCase("Customer Not Found - exit"))
{System.out.println("**** Recevied Request : "+inputLine);
System.out.println("**** Response to the Client : "+outputLine);
System.out.println("#########################################");
System.out.println("**** Listening for socket");
}
}
}
}
catch (IOException eee){
System.out.println(eee);
}}
private String retrieveDatabase(String id)
{ Object result = null;
result = myCustomerDatabase.get(id);
if (result == null)
return "Customer Not Found - " + id;
return result.toString();
} public static void main(String[] args)
{
new Server();
}
}
ClientSide:
import java.net.*;
import java.io.*;public class Client
{
public static final int DEFAULT_PORT = 9999;
public static final String DEFAULT_HOST = "localhost";
private BufferedReader myKeyboardReader = null;
public Client()
{
myKeyboardReader = new BufferedReader(new InputStreamReader(System.in)); startClient();
}
private void startClient()
{
Socket kkSocket = null;
PrintWriter out = null;
BufferedReader in = null; try {
kkSocket = new Socket(DEFAULT_HOST, DEFAULT_PORT);
out = new PrintWriter(kkSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(kkSocket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("Don't know about host: "+DEFAULT_HOST+".");
System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection to: "+DEFAULT_PORT+".");
System.exit(1);
} try{ BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String fromServer;
String fromUser;
boolean whetherPrint=false;
while ((fromServer = in.readLine()) != null) {
if(whetherPrint){System.out.println("**** Response from the Server : " + fromServer);
System.out.println();
System.out.println("#######################################");
}
whetherPrint=true;
System.out.print("**** Please input a Customer id : ");
fromUser = stdIn.readLine();
if (fromUser != null) {
out.println(fromUser);
}
if(fromUser.equalsIgnoreCase("exit")){
break;
}
}
out.close();
in.close();
stdIn.close();
kkSocket.close();}
catch(IOException ee){
}
}
public static void main(String[] args)
{
new Client();
}
}
AccoutClass:
public class Account
{
private float balance = 0.0F; public Account()
{
} public Account(float initialBalance)
{
balance = initialBalance;
} public void deposit(float amount)
{
balance += amount;
} public boolean withdraw(float amount)
{
if (balance - amount >= 0)
{
balance -= amount;
return true;
}
else
return false;
} public float getBalance()
{
return balance;
}
}
BankClass:
import java.util.*;public class Bank
{
private ArrayList customers = new ArrayList();
private String name; public Bank(String name)
{
this.name = name;
ArrayList customers = new ArrayList();
Customer me = new Customer("Chris Ling", 10000);
customers.add(me);
customers.add(new Customer("Eddie Leung", 12000));
customers.add(new Customer("Wojtek Goscinski", 14000));
this.customers = customers;
} public ArrayList getCustomers()
{
return customers;
}
}
CustomClass:
public class Customer
{
private Account myAccount = null;
private String name = ""; public Customer(String name, float initialBalance)
{
this.name = name;
myAccount = new Account(initialBalance); } public void process()
{
System.out.println("The customer is " + name);
System.out.println("Initial balance = " + myAccount.getBalance());
myAccount.deposit(5000);
System.out.println("Balance = " + myAccount.getBalance());
if (myAccount.withdraw(10000))
System.out.println("Balance = " + myAccount.getBalance());
} public String toString()
{
return name + " " + myAccount.getBalance();
}
}
错了
要用
out.println();对应的in.readLine()sever写一行println
client对应读一行readLine代码下载http://my.6cncn.cn