刚学socket,问几个简单的问题。1。下面的程序我可以在一台机器上运行吗?就是都放在eclipse里的同一个项目下,运行???????、我为什么运行不了?2 ServerSocket(5678);这个是随便写的端口号吗?3 先运行clinet,输入,然后运行server??????????服务方:
import java.io.*;
import java.net.*;public class MyServer {
public static void main(String[] args) throws IOException{
ServerSocket server=new ServerSocket(5678);
Socket client=server.accept();
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out=new PrintWriter(client.getOutputStream());
while(true){
String str=in.readLine();
System.out.println(str);
out.println("has receive....");
out.flush();
if(str.equals("end"))
break;
}
client.close();
}
}这个程序的主要目的在于服务器不断接收客户机所写入的信息只到.客户机发送"End"字符串就退出程序.并且服务器也会做出"Receive"为回应.告知客户机已接收到消息.客户机代码:
import java.net.*;
import java.io.*;public class Client{
static Socket server;
public static void main(String[] args)throws Exception{
server=new Socket(InetAddress.getLocalHost(),5678);
BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream()));
PrintWriter out=new PrintWriter(server.getOutputStream());
BufferedReader wt=new BufferedReader(new InputStreamReader(System.in));
while(true){
String str=wt.readLine();
out.println(str);
out.flush();
if(str.equals("end")){
break;
}
System.out.println(in.readLine());
}
server.close();
}
}客户机代码则是接受客户键盘输入,并把该信息输出,然后输出"End"用来做退出标识.
import java.io.*;
import java.net.*;public class MyServer {
public static void main(String[] args) throws IOException{
ServerSocket server=new ServerSocket(5678);
Socket client=server.accept();
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out=new PrintWriter(client.getOutputStream());
while(true){
String str=in.readLine();
System.out.println(str);
out.println("has receive....");
out.flush();
if(str.equals("end"))
break;
}
client.close();
}
}这个程序的主要目的在于服务器不断接收客户机所写入的信息只到.客户机发送"End"字符串就退出程序.并且服务器也会做出"Receive"为回应.告知客户机已接收到消息.客户机代码:
import java.net.*;
import java.io.*;public class Client{
static Socket server;
public static void main(String[] args)throws Exception{
server=new Socket(InetAddress.getLocalHost(),5678);
BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream()));
PrintWriter out=new PrintWriter(server.getOutputStream());
BufferedReader wt=new BufferedReader(new InputStreamReader(System.in));
while(true){
String str=wt.readLine();
out.println(str);
out.flush();
if(str.equals("end")){
break;
}
System.out.println(in.readLine());
}
server.close();
}
}客户机代码则是接受客户键盘输入,并把该信息输出,然后输出"End"用来做退出标识.
java.net.SocketException: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at sun.nio.cs.StreamDecoder$CharsetSD.readBytes(StreamDecoder.java:408)
at sun.nio.cs.StreamDecoder$CharsetSD.implRead(StreamDecoder.java:450)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:182)
at java.io.InputStreamReader.read(InputStreamReader.java:167)
at java.io.BufferedReader.fill(BufferedReader.java:136)
at java.io.BufferedReader.readLine(BufferedReader.java:299)
at java.io.BufferedReader.readLine(BufferedReader.java:362)
at MyServer.main(MyServer.java:12)
Exception in thread "main"
2 ServerSocket(5678);这个是随便写的端口号吗?是的3 先运行clinet,输入,然后运行server??????????先运行server,然后运行clinet,输入
import java.io.*;public class Client{
// Socket server;
public static void main(String[] args)throws Exception{
Socket server=new Socket("127.0.0.1",1111);
BufferedReader in=new BufferedReader(new InputStreamReader(server.getInputStream()));
OutputStream os =server.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
PrintWriter pw = new PrintWriter(osw,true);
// PrintWriter out=new PrintWriter(new OutputStreamWriter(server.getOutputStream()),true);
BufferedReader wt=new BufferedReader(new InputStreamReader(System.in));
while(true){
String str=wt.readLine();
pw.println(str);
// out.flush();
if(str.equals("end")){
break;
}
System.out.println(in.readLine());
} }
}serverimport java.io.*;
import java.net.*;public class MyServer {
public static void main(String[] args) throws Exception{
ServerSocket server=new ServerSocket(1111);
Socket client=server.accept();
System.out.println("服务器");
// InputStream is = client.getInputStream();
// InputStreamReader isr = new InputStreamReader(is);
// BufferedReader br = new BufferedReader(isr);
BufferedReader in=new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out=new PrintWriter(new OutputStreamWriter(client.getOutputStream()),true);
while(true){
String str=in.readLine();
System.out.println(str);
out.println("has receive....");
// out.flush();
if(str.equals("end"))
break;
} }
}总结一下,我将端口号改成1111,8888都行,就是5678不行
你可以试一下
现在在我机上通过对于第二个问题的回答我收回,我也是新手,哈哈
一、JAVA基础培训
1.孙鑫Java无难事(共108集 SWF格式)
2.张孝祥Java就业培训(共56集 RM/RMVB格式)
3.翁凯Java语言视频培训(共30讲 CSF格式)
二、JAVA进阶培训
1.吉林大学远程JSP培训(共32讲 AVI格式)
2.西安电子科技大学JSP在线课程(共35讲 AVI格式)
3.JSP数据库系统开发培训( ISO格式 内含电子书及相关源代码)
4.刘晓涛JAVA UML核心基础(共6集 RM/RMVB格式 )
5.J2EE专题系列讲座之Struts(共5讲 AVI格式 )
6.赛迪网校J2EE软件工程师培训(J2EE基础13集 高级17集 案例7集)
7.J2EE Web程序开发(共38集)
8.天峰培训J2EE快速进阶培训视频(共33讲 AVI格式)
三、JAVA实战项目培训录像
1.北京尚学堂科技_马士兵老师_项目实战手把手java视频教程-坦克大战
2.北京尚学堂科技_马士兵老师_项目实战手把手j2se视频教程-Chat
3.北京尚学堂科技_马士兵老师_项目实战手把手BBS教程
四、数据库方面
1.Oracle 9i DBA中文视频远程班培训录像(共64集 AVI格式)
*1Z0-007 Introduction to Oracle9i SQL
*1Z0-031 Oracle9i DBA Fundamentals I
*1Z0-032 Oracle9i DBA Fundamentals II
*1Z0-033 Oracle9i Performance Tuning
另附全套PPT培训讲稿。
2.中科院Oracle 10G 数据库培训录像(共18集 rmvb格式)联系方式:
QQ:421130479
MSN:[email protected]
E-mail:[email protected]