一个是打开一个port然后监听这个port,另外一个是打开一个指定主机的指定port,一个是被动,一个是主动,OK?
互传文件那要看谁先连谁,主动连接的那个是client端,用Socket,另外那个用ServerSocket类,实在要是搞不清楚就用UDPSocket吧,那个反正不存在客户端和服务器端的区别
互传文件那要看谁先连谁,主动连接的那个是client端,用Socket,另外那个用ServerSocket类,实在要是搞不清楚就用UDPSocket吧,那个反正不存在客户端和服务器端的区别
解决方案 »
- 关于Object-Oriented Design and Patterns的作业题~~高手帮帮忙啊~~
- JSP页面是如何被执行的?JSP执行效率比Servlet低吗?
- 请问在登录的JFrame中回车后执行登录按钮的事件
- 急, 在线等,马上结贴
- 问个弱智问题,成员函数的出参怎么用?
- java 的socket有没有类似select、epoll的函数
- 我又需要帮助拉,我怎样从文件中读取一个汉字或日语字母
- 谁研究过 蓝雨聊天室(纯java),它的服务器端是如何监听客户端请求的???
- 小弟在这先谢过了:N天无人搭理my question????
- JAVA中是怎么实现多态的?
- 做程序员到底后悔吗 请留下您的意见 谢谢
- 我是java的初学者,有 一段代码不懂是什么意思,请大家赐教,在线等,谢谢!!!
没server就是client
我记得我以前找到过一个一个IBM的关于SOCKET编程教程,很好,其中就有,
文件传输问题。
SocketServer ss = new SocketServer(i_port, i_maxConn);发送端
Socket s = new Socket(接收端ip, 接收端port);这样就连起来了吧
import java.io.*;
import java.net.*; public class RemoteFileClient {
protected BufferedReader socketReader;
protected PrintWriter socketWriter;
protected String hostIp;
protected int hostPort; public RemoteFileClient(String aHostIp, int aHostPort) {
hostIp = aHostIp;
hostPort = aHostPort;
}
public String getFile(String fileNameToGet) {
StringBuffer fileLines = new StringBuffer(); try {
socketWriter.println(fileNameToGet);
socketWriter.flush(); String line = null;
while ((line = socketReader.readLine()) != null)
fileLines.append(line + "\n");
} catch (IOException e) {
System.out.println("Error reading from file: " + fileNameToGet);
} return fileLines.toString();
}
public static void main(String[] args) {
RemoteFileClient remoteFileClient = new RemoteFileClient("127.0.0.1", 3000);
remoteFileClient.setUpConnection();
String fileContents = remoteFileClient.getFile("C:\\WINNT\\Temp\\RemoteFile.txt");
remoteFileClient.tearDownConnection(); System.out.println(fileContents);
}
public void setUpConnection() {
try {
Socket client = new Socket(hostIp, hostPort); socketReader = new BufferedReader(new InputStreamReader(client.getInputStream()));
socketWriter = new PrintWriter(client.getOutputStream()); } catch (UnknownHostException e) {
System.out.println("Error setting up socket connection: unknown host at " + hostIp + ":" + hostPort);
} catch (IOException e) {
System.out.println("Error setting up socket connection: " + e);
}
}
public void tearDownConnection() {
try {
socketWriter.close();
socketReader.close();
} catch (IOException e) {
System.out.println("Error tearing down socket connection: " + e);
}
}
}
//服务端
import java.io.*;
import java.net.*; public class RemoteFileServer {
int listenPort;
public RemoteFileServer(int aListenPort) {
listenPort = aListenPort;
}
public void acceptConnections() {
try {
ServerSocket server = new ServerSocket(listenPort);
Socket incomingConnection = null;
while (true) {
incomingConnection = server.accept();
handleConnection(incomingConnection);
}
} catch (BindException e) {
System.out.println("Unable to bind to port " + listenPort);
} catch (IOException e) {
System.out.println("Unable to instantiate a ServerSocket on port: " + listenPort);
}
}
public void handleConnection(Socket incomingConnection) {
try {
OutputStream outputToSocket = incomingConnection.getOutputStream();
InputStream inputFromSocket = incomingConnection.getInputStream(); BufferedReader streamReader = new BufferedReader(new InputStreamReader(inputFromSocket)); FileReader fileReader = new FileReader(new File(streamReader.readLine())); BufferedReader bufferedFileReader = new BufferedReader(fileReader);
PrintWriter streamWriter = new PrintWriter(incomingConnection.getOutputStream());
String line = null;
while ((line = bufferedFileReader.readLine()) != null) {
streamWriter.println(line);
} fileReader.close();
streamWriter.close();
streamReader.close();
} catch (Exception e) {
System.out.println("Error handling a client: " + e);
}
}
public static void main(String[] args) {
RemoteFileServer server = new RemoteFileServer(3000);
server.acceptConnections();
}
} 这只是单方的传送,想要实现双向的传送简单地加入原来的代码可以么
^-^!
我没学几天,望赐教!