Socat terminates after connection close

This comand (serial port redirector) accepts a single connection on TCP:11313 :

socat PTY,link=/dev/ttyV1,echo=0,raw,unlink-close=0 TCP-LISTEN:11313,forever,reuseaddr

However when the connection is lost, the above socat process is killed and the client is not able to connect.

I can solve this by adding fork option at the end of the above command. But then multiple clients will be able to connect. But I want to accept only one connection.

Any ideas how to achieve this?

Answers


You can limit the number of children with the max-children option:

LISTEN option group, options specific to listening sockets

max-children= Limits the number of concurrent child processes [int]. Default is no limit.

With this you can limit the number of clients that can interact with the PTY to one, but won't prevent others from connecting. Others will simply queue until the first connection is closed. If you want to prevent that, I'd suggest to just wrap the socat call in a while true; do ..; done loop:

while true; do
  socat PTY,link=/dev/ttyV1,echo=0,raw,unlink-close=0 TCP-LISTEN:11313,forever,reuseaddr
done

Need Your Help

fix java.net.SocketTimeoutException: Read timed out

java post restlet apache-httpclient-4.x

I have a RESTful server which takes an http POST input from client to vote up songs on server. I have used Apache HTTPClient for client.

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.