客户端代码
package com.lovo.test;import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;public class ClientTest { /**
* @param args
*/
public static void main(String[] args) {
Socket socket = null;
String msg = null;
try {
socket = new Socket("127.0.0.1",9527);
System.out.println("客户端启动.....");
while(true){
Scanner scan = new Scanner(System.in);
msg = scan.next();
OutputStream out = socket.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out));
bw.write(msg);
bw.flush();
System.out.println("您(客户端)说:" + msg);
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
if(socket != null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} }}服务器端的多线程代码
package com.lovo.test;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;public class ServerThread extends Thread {
Socket socket = null;
String msg = null;
public ServerThread(){
}
public ServerThread(Socket socket){
this.socket = socket;
}
public void run(){
InputStream in;
try {
in = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
msg = br.readLine();
System.out.println("客户端说:" + msg);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
服务器端的代码package com.lovo.test;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;import org.xml.sax.InputSource;public class ServerTest { /**
* @param args
*/
public static void main(String[] args) {
ServerSocket server = null;
Socket socket = null;
String msg = null;
try {
server = new ServerSocket(9527);
System.out.println("服务器开始监听....");
while(true){
socket = server.accept();
new ServerThread(socket).start();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
if(socket != null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} }}
package com.lovo.test;import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;public class ClientTest { /**
* @param args
*/
public static void main(String[] args) {
Socket socket = null;
String msg = null;
try {
socket = new Socket("127.0.0.1",9527);
System.out.println("客户端启动.....");
while(true){
Scanner scan = new Scanner(System.in);
msg = scan.next();
OutputStream out = socket.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out));
bw.write(msg);
bw.flush();
System.out.println("您(客户端)说:" + msg);
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
if(socket != null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} }}服务器端的多线程代码
package com.lovo.test;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;public class ServerThread extends Thread {
Socket socket = null;
String msg = null;
public ServerThread(){
}
public ServerThread(Socket socket){
this.socket = socket;
}
public void run(){
InputStream in;
try {
in = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
msg = br.readLine();
System.out.println("客户端说:" + msg);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
服务器端的代码package com.lovo.test;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;import org.xml.sax.InputSource;public class ServerTest { /**
* @param args
*/
public static void main(String[] args) {
ServerSocket server = null;
Socket socket = null;
String msg = null;
try {
server = new ServerSocket(9527);
System.out.println("服务器开始监听....");
while(true){
socket = server.accept();
new ServerThread(socket).start();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
if(socket != null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} }}
解决方案 »
- 原题如下:用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连. 解决思路:强化题目,用1、2、2、3、4、5这六个数字排列“递增”序列。
- java动态代理的流程问题,急,麻烦大侠们给点详细说明,越细越好
- 求救:菜鸟新问题,代码不能运行?
- 字符串的调用~~
- 谁知道java api doc下载比较快的网址,sun太慢了(50分或更多)
- 关于String 的困惑,高手帮帮忙
- 这是什么错误啊?
- socket通讯中的byte[]数组传送问题!!!!急!!!!!!!!!!!!!!!
- 那里有sqlserver jdbc下载和tomcat配套起来用的,在线等待!!
- 使用HttpClient时产生的异常
- 急需权限管理系统,jsp做的
- 取集合(List)中的某个值
改造了一下:
线程类:
while(true)
{
msg = br.readLine();
System.out.println("客户端说:" + msg);
}
客户端类
while(true){
Scanner scan = new Scanner(System.in);
msg = scan.next();
OutputStream out = socket.getOutputStream();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out));
bw.write(msg+"\n"); //加上一个回车 bw.flush();
System.out.println("您(客户端)说:" + msg);
}
线程类的那个部分写成:
while(true){
in = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
msg = br.readLine();
System.out.println("客户端说:" + msg);
}和您那样写有什么区别呢?
为什么你那个不每次得到socket上获取的流依然能过读出客户端每次所发的消息呢?
bw.flush();
改成br.println(msg);
bw.flush();