刚刚看了下socket的知识,于是自己做了一个简单的从客户端向服务端传递图片的程序。 但是中间出现了一些小问题,程序曾经一度在某个位置进入等待状态,无法继续运行下去。
下面分别是服务端和客户端的代码....
服务端的代码如下:
下面分别是服务端和客户端的代码....
客户端代码:
package cn.dzr.tcp.Client;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
public class ClientTcp
{
public static void main(String[] args) throws IOException
{
System.out.println("客服端启动,准备传输数据....");
//1,创建Socket
int port = 10010; //设定端口号
InetAddress address = InetAddress.getLocalHost();
Socket socket = new Socket(address,port);
//2,获取Socket中的数据
OutputStream out = socket.getOutputStream();
InputStream in = socket.getInputStream();
//选择需要传输的文件.
File file = new File("D:+"+File.separator+"Client/ke.jpg");
//将文件进行传输
//1,将文件内容转为文件流,先是传输到一个字节数组中。
//2,将字节数组中的内容传输到out中。
byte[] buff = new byte[1024];
FileInputStream fis = new FileInputStream(file);
int len = 0;
while((len =fis.read(buff))!=-1)
{
out.write(buff, 0, len);
}
System.out.println("文件传输完毕....");
byte[] bufin = new byte[1024];
int reclen = in.read(bufin);
String str = new String(bufin,0,reclen);
System.out.println("服务端传来的消息:"+str);
fis.close();
socket.close();
}
}
服务端的代码如下:
package cn.dzr.tcp.Server;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerTcp
{
public static void main(String[] args) throws IOException
{
System.out.println("服务端启动....准备接受数据.");
//创建ServSocket,
ServerSocket ss = new ServerSocket(10010);
//获取连接过来的socket
//为了让服务端能够一直接受消息,我们需要定义个while循环。
int count = 0;
int time = 1;
while(true)
{
System.out.println("准备第"&#