connect Arduino ethernet shield to optical fiber

First, I apologize about my bad English.
I want to have a communication between Arduino ethernet shield and optical fiber media converter. But the connection timed out.
Without using media converters in the middle of communication, the Arduino connects to my laptop by using ethernet shield.
Also, the media converters work connecting to pair of Laptops.
I run chat server and web server example on Arduino. Should I use other extra instruction in my code?
I will be appreciate for your help.

Here is the chat server example code:

#include <SPI.h>
#include <Ethernet.h>

byte mac = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

IPAddress ip(169, 254, 177, 139);

// telnet defaults to port 23
EthernetServer server(23);
bool alreadyConnected = false; // whether or not the client was connected previously

void setup() {

Ethernet.begin(mac, ip);

// Open serial communications and wait for port to open:
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only

// Check for Ethernet hardware present
if (Ethernet.hardwareStatus() == EthernetNoHardware) {
Serial.println(“Ethernet shield was not found. Sorry, can’t run without hardware. :(”);
while (true) {
delay(1); // do nothing, no point running without Ethernet hardware
if (Ethernet.linkStatus() == LinkOFF) {
Serial.println(“Ethernet cable is not connected.”);


// start listening for clients

Serial.print(“Chat server address:”);

void loop() {
// wait for a new client:
EthernetClient client = server.available();

// when the client sends the first byte, say hello:
if (client) {
if (!alreadyConnected) {
// clear out the input buffer:
Serial.println(“We have a new client”);
client.println(“Hello, client!”);
alreadyConnected = true;

if (client.available() > 0) {
// read the bytes incoming from the client:
char thisChar =;
// echo the bytes back to the client:
// echo the bytes to the server as well: