// Copyright 2012 Google Inc. All rights reserved.
// Use of this source code is governed by the Apache 2.0
// license that can be found in the LICENSE file.

// Package socket provides outbound network sockets.
//
// This package is only required in the classic App Engine environment.
// Applications running only in the Managed VM hosting environment should
// use the standard library's net package.
package socket
