Which is the best method for sending a data using sockets:
Method 1: Creating a new socket every time when data needs to be sent and closing it when the transfer is complete.
Method 2: Using the same socket instead of creating a new socket and maintaining the connection even when waiting for new data.
That depends. Creating a new socket means two computers have to discover each other, so there is name lookup, TCP/IP routing and resource allocation involved. Not really cheap but not that expensive either. Unless you send data more than 10 times/second, you won't notice.
If you keep a socket open and don't send data for some time, a firewall between the two computers will eventually decide that this connection is stale and forget about it. The next data packet you send will fail with a timeout.
So the main difference between the two methods is whether you can handle the timeout case properly in your code. You will have to handle this every time you write data to the socket. 
In many cases, the code to write is hidden very deep somewhere and the code doesn't actually know that it's writing to a socket plus you will have more than one place where you write data, so the error handling will leak into your design. That's why most people prefer to create a new socket every time, even if it's somewhat expensive.
Which is a larger overhead: Creating a new socket each time or maintaining a single socket for data transfer