---
title: "Address already in use"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/127689-address-already-in-use"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "Grollen"
published: "2005-05-05T04:03:49.000Z"
updated: "2005-05-05T11:42:09.000Z"
replies: 4
views: 271
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/java/127689-address-already-in-use"
---

# Address already in use

## #1 — Grollen, 2005-05-05T04:03Z

Hej!

Jag sitter och försöker implementera ett system som ska mäta tiden för olika sätt att skicka meddelanden med hjälp utav java.

Ett av kraven är att vi skall använda port 9000 för klienter och port 10000 för servrarna. I första testet skapar jag nya sockets vid varje iteration  och skickar över ett meddelande som jag skapat tidigare med följande kod

Klientkoden:

```

InetAddress address = InetAddress.getByName("localhost");
			byte[] passing = this.getMessageWithSize(size);
for(int i=0;i<repetitions;i++)
			{
				//Creates a socket to the local host at the default server port and writes a message
				//Start timing
				timeStart = System.currentTimeMillis();
				Socket clientSocket = Socket clientSocket = new Socket(address, DEFAULT_SERVER_PORT, address, DEFAULT_CLIENT_PORT);
				BufferedOutputStream out = new BufferedOutputStream(clientSocket.getOutputStream(),size);
				BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()),size);
				out.write(message);
				out.flush();
				//Reads the the reply
				response = in.readLine();
				in.close();
				out.close();
				clientSocket.close();
				//Stop timing
				timeEnd = System.currentTimeMillis();
				System.out.println("#"+i+": Response from from server: Read "+response.length()+" of bytes/characters. One round robin: "+(timeEnd - timeStart)+" msec");
				totalTime = totalTime + timeEnd - timeStart;
			}
```

Serverkoden

```
char[] result = new char[size];
			ServerSocket server = new ServerSocket(DEFAULT_SERVER_PORT);
			for(int i=0; i<repetitions; i++)
			{
				//Creates a socket at default server port that listens to requests.
				Socket serverSocket = server.accept();
				
				BufferedReader in = new BufferedReader( new InputStreamReader(serverSocket.getInputStream()));
				BufferedOutputStream out = new BufferedOutputStream(serverSocket.getOutputStream(),size);
				request = in.readLine();
				System.out.println("#"+i+": Request from client: Read "+request.length()+" characters.");
				request = request.concat("\n");
				//Writes back to the same socket				
				out.write(request.getBytes());
				out.flush();			
				in.close();
				out.close();
				serverSocket.close();
				
			}
			server.close();
```

Problemet med detta är att det fungerar endast mellan 20 och 200 ggr, sen säger får jag ett exception som lyder:

Java.net.bindException - Address already in use

Någon som har någon pejling på vad jag kan ändra? Det verkar som att socket:en inte stängs riktigt, utan att den ligger kvar ett tag.

Permalänk: https://www.webforum.nu/p/127689

## #2 — Nickemannen, 2005-05-05T08:06Z

Det tar en stund för den att stänga socketen ja.

Jag vet inte hur det är med Java men i andra språk finns det något som heter reuse. Kolla efter detta.

Permalänk: https://www.webforum.nu/p/1606184

## #3 — Grollen, 2005-05-05T09:04Z

Det finns något som heter
Socket.setReuseAddress(boolean), men det fungerar tyvärr inte heller. :/

Permalänk: https://www.webforum.nu/p/1606203

## #4 — Nickemannen, 2005-05-05T10:38Z

Socket.serReuseAddress(true) sätter du det innan du öppnar socketen?

Permalänk: https://www.webforum.nu/p/1606244

## #5 — Grollen, 2005-05-05T11:42Z

Ja. Skapar en socket som inte är connected, sätter reuse till true och sedan connectar jag till en serversocket.

Permalänk: https://www.webforum.nu/p/1606271

---

Tråden på webben: https://www.webforum.nu/amne/java/127689-address-already-in-use
